nlu1990Medlem sedan nov. 20077 inlägg
Hej. När jag programmerar i MySQL och PHP så får jag upp ett errormeddelande som säger
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in ... on line 18
.
... är mappens adress. Och koden på den raden är:
$strQuery = mysql_query("INSERT INTO telefonbok (fnamn,enamn,tfnnr) VALUES($_POST['fnamn'] . ", " . $_POST['enamn'] . ", " . $_POST['tfnnr']) or die(mysql_error()));
Vad är det för fel???
Peter SMedlem sedan dec. 20025 484 inlägg
Om det är strängar du försöker spara skall dessa omgärdas av apostrofer.
nlu1990Medlem sedan nov. 20077 inlägg
Det som jag försöker skapa är en telefonbok med en sida där man skriver in förnamn, efternamn och telefonnr och när man har skrivit in namnet och telefonnumret så ska den skriva ut alla förnamnen som finns i databasen.
Men jag har försökt att göra bara småändringar som jag tror kan vara fel, men det blir inte bättre utav det.
Är det någon annan som har någon idé eller måste jag lita på att peter_s har rätt??? :p
MickeA.comMedlem sedan feb. 20034 528 inlägg
Testa med:
$strQuery = mysql_query("INSERT INTO telefonbok "
."(fnamn,enamn,tfnnr) "
."VALUES ("
."'" . $_POST['fnamn'] . "', "
."'" . $_POST['enamn'] . "', "
."'" . $_POST['tfnnr'] . "'"
.")" or die(mysql_error()));
/r Glöm inte att lägga till skydd mot SQL Injektioner...
jmeMedlem sedan maj 20011 967 inlägg
Om du kan så rekommenderar jag att du använder PDO. Då slipper du att manuellt lägga till alla dessa j*vla enkelfnuttar och så höjs säkerhetn samtidigt då med PDO så skyddas du emot sql injections. :)
http://fi.php.net/manual/en/pdo.prepare.php
nlu1990Medlem sedan nov. 20077 inlägg
MickeA.com: Det vart bättre med ditt kodexempel, men nu fick jag problem med att jag inte får fram andra fel bl.a undefined index och nånting om att $strQuery inte är ett "not valid MySQL result resource". Vad kan detta vara???
jme: Jag har aldrig hört talas om PDO så jag tror inte att jag ska ge mig in i det just nu. Ev. vid ett senare tillfälle.
MickeA.comMedlem sedan feb. 20034 528 inlägg
nlu1990 skrev:
MickeA.com: Det vart bättre med ditt kodexempel, men nu fick jag problem med att jag inte får fram andra fel bl.a undefined index och nånting om att $strQuery inte är ett "not valid MySQL result resource". Vad kan detta vara???
Du måste visa mer kod om vi ska kunna hjälpa dig.
nlu1990Medlem sedan nov. 20077 inlägg
Jag har jobbat lite nu hemma och lyckats få till det lite bättre. Jag "startade om" projektet och fick ett nytt problem med inskrivning till databasen. Detta är kodsidan som jag har problem med.
<?PHP $objConn = mysql_connect ('localhost', 'root', '*****');
mysql_select_db('Forum');
$strQuery = mysql_query ("INSERT INTO tblForum(forumName),
tblThread(threadName), tblPost(postName, postText, writer)
VALUES ('" . $_POST['forum'] . "', '" . $_POST['thread'] . "', '" . $_POST['name'] . "', '" . $_POST['text'] . "', '" . $_POST['writer'] . "') ")
or die(mysql_error());
mysql_close($objConn);
header('Location: http://localhost/Forum/setData.php');
?>
Och numera får jag upp felmeddelande:
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 ' tblThread(threadName), tblPost(postName, postText, writer) VALUES ('Allt om All' at line 1
Jag använder Apache 2.2.9 och PHP 5.2.6
jmeMedlem sedan maj 20011 967 inlägg
nlu1990: har du inte hört talas om PDO så borde du.
Det sätt du skapar sql-frågor är inte bra och är inte skyddad mot s k sql injections (googla).
Med t ex PDO slipper du pilla med fnuttar (').
"INSERT INTO tblForum(forumName),
tblThread(threadName), tblPost(postName, postText, writer) ...
ser lite suspekt ut. Testa att separera detta i två olika sql-satser.
Dvs:
mysql_query("INSERT INTO tblForum(forumName) VALUES ('" . $_POST['forum'] . "')");
och
mysql_query("INSERT INTO tblPost(postName, postText, writer)
VALUES ('" . $_POST['name'] . "', '" . $_POST['text'] . "', '" . $_POST['writer'] . "') ");
fiddlerMedlem sedan juli 20022 464 inlägg
Har du inte glömt att ange $objConn i din mysql_query-sats?
jmeMedlem sedan maj 20011 967 inlägg
fiddler: Den behövs inte anges. Om den utelämnas så används den nuvarande uppkopplingen automatiskt.
nlu1990Medlem sedan nov. 20077 inlägg
Jag öppnar ju MySQL databasen redan i början av sidan. Rad 1, tecken 8-15.
fiddlerMedlem sedan juli 20022 464 inlägg
jme skrev:
fiddler: Den behövs inte anges. Om den utelämnas så används den nuvarande uppkopplingen automatiskt.
Ah, tack för upplysningen! :) Jag blev lite osäker om det.