webForumDet fria alternativet

Parse error: syntax error

12 svar · 637 visningar · startad av nlu1990

nlu1990Medlem sedan nov. 20077 inlägg
#1

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
#2

Om det är strängar du försöker spara skall dessa omgärdas av apostrofer.

nlu1990Medlem sedan nov. 20077 inlägg
#3

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
#4

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
#5

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
#6

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
#7

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
#8

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
#9

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
#10

Har du inte glömt att ange $objConn i din mysql_query-sats?

jmeMedlem sedan maj 20011 967 inlägg
#11

fiddler: Den behövs inte anges. Om den utelämnas så används den nuvarande uppkopplingen automatiskt.

nlu1990Medlem sedan nov. 20077 inlägg
#12

Jag öppnar ju MySQL databasen redan i början av sidan. Rad 1, tecken 8-15.

fiddlerMedlem sedan juli 20022 464 inlägg
#13

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.

Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb