Avatar billede hrole Mester
07. august 2009 - 07:36 Der er 14 kommentarer og
1 løsning

Navn på tabel

Hej,

Fra en form sendes:
<select name="tab" id="tab" >
<option value="Ferie 2008">Ferie 2008</option>
<option value="Ferie 2007">Ferie 2007</option>
</select>

til resultatsiden med:
$valgttab = $_GET['tab'];

$qry = mysql_query("SELECT * FROM $valgttab WHERE Id=1");

Dette giver intet resultat, men omdøbes tabel til Ferie2007 og option value="Ferie2007" er der ingen problemer. Jeg har forsøgt med option value="Ferie%202007", men uden held.

Er det muligt at kalde en tabel som indeholder mellemrum fx "Ferie 2007" - og hvordan?
Avatar billede lhavelund Nybegynder
07. august 2009 - 07:59 #1
Et rent gæt vil være, at du skal forsøge dig med "Ferie\ 2007", uden at jeg er stensikker.
Avatar billede hrole Mester
07. august 2009 - 08:07 #2
Desværre, det virkede ikke.
Avatar billede chris0905 Nybegynder
07. august 2009 - 08:10 #3
Kan du bruge underscore [_] eller er det heller ikke noget???
Avatar billede erikjacobsen Ekspert
07. august 2009 - 08:34 #4
Du kan 

    $qry = mysql_query("SELECT * FROM `$valgttab` WHERE Id=1");

men det er sikkerhedsmæssigt skørt at have din struktur af databasen lagt åben ud for tilfældige brugere.
Avatar billede hrole Mester
07. august 2009 - 21:32 #5
beklager min kommentar først kommer nu, men jeg har kun fået én mail om kommentarer og det var efter ihavelunds kommentar.

Underscore er desværre ikke en mulighe i mit tilfælde, omend den virker.

ericjacobsen: jeg er klar over det sikkerhedsmæssige ikke er i orden. den del kode jeg har lagt ud er også kun den skrabede testdel. forslaget virker desværre ikke - hvor kan min fejl være?
Avatar billede erikjacobsen Ekspert
07. august 2009 - 21:57 #6
Hvordan virker det ikke ? Det er den rigtige løsning til det forkerte problem ;)

Men prøv at få at vide hvad der er galt:

    $qry = mysql_query("SELECT * FROM `$valgttab` WHERE Id=1") or die(mysql_error());

og udskriv gerne også selve SQL-sætningen.
Avatar billede hrole Mester
07. august 2009 - 22:22 #7
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Ferie 2007' WHERE Id=1' at line 1
Avatar billede hrole Mester
07. august 2009 - 22:33 #8
Hvis jeg omdøber tabellen fra Ferie 2007 til Ferie2007 og kører:

$qry = mysql_query("SELECT * FROM $valgttab WHERE Id=1");

altså uden $valgtab uden '', virker det, men med '' virker det ikke.
Avatar billede arne_v Ekspert
07. august 2009 - 23:23 #9
Har du set de `` Erik havde omkring?
Avatar billede hrole Mester
07. august 2009 - 23:39 #10
ja, jeg fik måske ikke formuleret mig helt præcis.

$qry = mysql_query("SELECT * FROM '$valgttab' WHERE Id=1") or die(mysql_error());

giver:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Ferie 2007' WHERE Id=1' at line 1

hvis jeg kører:
$qry = mysql_query("SELECT * FROM '$valgttab' WHERE Id=1") or die(mysql_error());

med omdøbt tabel til Ferie2007 og <option value="Ferie2007"> (uden mellemrum), får jeg også:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Ferie 2007' WHERE Id=1' at line 1

Hvis jeg derimod kører (med omdøbt tabel til Ferie2007 og <option value="Ferie2007"> - uden mellemrum):
$qry = mysql_query("SELECT * FROM '$valgttab' WHERE Id=1")or die(mysql_error());

Får jeg også:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''Ferie 2007' WHERE Id=1' at line 1

Kører jeg:
$qry = mysql_query("SELECT * FROM $valgttab WHERE Id=1")or die(mysql_error());
med (med omdøbt tabel til Ferie2007 og <option value="Ferie2007"> fungerer det fint.

Det er når $valgtab er i '' problemet opstår.
Avatar billede arne_v Ekspert
08. august 2009 - 00:25 #11
Der er forskel på '' og `` - stor forskel !
Avatar billede hrole Mester
08. august 2009 - 10:53 #12
Ok, det beklager jeg meget. Jeg havde ikke set det var accent grave og ikke apostroffer. Hvori ligger forskellen.

Mange tak for svar til erikjacobsen!
Avatar billede arne_v Ekspert
08. august 2009 - 14:45 #13
``sættes omkring navne som ellers ikke er valide

'' sættes omkring tekst værdier
Avatar billede hrole Mester
08. august 2009 - 15:20 #14
Tak arne_v. Da Erikjacobsen ikke samler på point, synes jeg det er mest fair du får dem, da du ihærdigt gjorde mig opmærksom på fejlen - og kom med en forklaring.
Avatar billede arne_v Ekspert
09. august 2009 - 01:30 #15
OK
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester