Hej,
Får följande fel på min SQL-sats. Har en nästan likadan till en annan funktion som funkar strålande så jag förstår inte var problemet uppstår riktigt.
$sqlInsert = "INSERT INTO tblArticleComments (memberID, articleID, date_time, comment, ip) VALUES ($userdata['from'], $userdata['articleID'], now(), '$userdata[comment]', '$userdata[ip]')";
memberID: INT
articleID: INT
date_time: DATETIME
comment: VARCHAR
ip: VARCHAR
Felmeddelande:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in
vad står det om du skriver ut SQL-frågan?
echo $sqlInsert;
Jag får fortfarande bara upp felmeddelandet även fast jag kör med echo. Det jag gör är att hämta information från ett formulär som jag sedan lägger in i tabellen. Jag har skrivit ut alla mottagna variabler för att verifiera att innehållet är korrekt och så här långt stämmer det....
LarsGMedlem sedan dec. 200012 464 inlägg Det är ju ett PHP-fel som du får så det har inget direkt med SQL-frågan att göra. Kan det vara någon glömd ' eller ; ovanför?
Okej..det är nog sant att det är PHP och inte SQL som det är fel på.
Hela den mottagande funktionen ser ut så här:
if(trim($_POST['sendcomment']) == 'Skicka') {
$userdata['comment'] = trim($_POST['comment']);
$userdata['from'] = trim($_POST['from']);
$userdata['articleID'] = trim($_POST['articleID']);
$userdata['ip'] = trim($_POST['ip']);
echo "</br>Från: ".$userdata['from'];
echo "</br>ArtikelID ".$userdata['articleID'];
echo "</br>Kommentar: ".$userdata['comment'];
echo "</br>IP: ".$userdata['ip'];
//Uppdaterar kommentarer för artikel i databasen ############################
$sqlInsert = "INSERT INTO tblArticleComments (memberID, articleID, date_time, comment, ip) VALUES ('$userdata['from']', '$userdata['articleID']', now(), '$userdata[comment]', '$userdata[ip]')";
echo "SQL: ".$sqlInsert;
mysql_query($sqlInsert) or die (mysql_error());
echo "<script Language='JavaScript'>location.href=('../index.php');</script>";
}
/R: Kunde inte se att det skulle vara någon "fnutt" eller ; som saknades på rak arm när jag lusläste koden. Men jag brukar bli lite kodblind när jag stirrar på något för länge :)
LarsGMedlem sedan dec. 200012 464 inlägg VALUES ('$userdata['from']'
mot
VALUES ('" . $userdata['from'] ."'
usw
Tack! Jag vet att jag gjort på ett liknande sätt i en SELECT-fråga tidigare, men aldrig i en INSERT. Det kallas väl att man konkatenerar, right?
Denna SQL-fråga som jag använt mig av tidigare fungerar utmärkt trots att den är skriven på samma sätt som min första här. Hur kommer det sig?
$sqlInsert = "INSERT INTO tblCommunityMailMessage (posted, subject, content, fromID, toID, folderID) VALUES (now(), '$userdata[subject]', '$userdata[message]', '$userdata[from]', '$userdata[to]', 1)";
Din SQL-sats löste för övrigt mitt problem :) Har precis rättat till koden.
Om jag spinner vidare väldigt kort på det här problemet du just löste. Jag har en kommentarstabell för artiklar där folk kan kommentera. Nyckeln i denna tabell betstår av (memberID, articleID), vilket innebär att en medlem endast kan avge kommentar på en viss artikel en gång. Jag provade nu att skriva ytterligare en kommentar för skojs skull och då kom helt riktigt SQL-meddelandet "Duplicate entry '1-1' for key 1" upp eftersom detta är en composite key. Finns det någon funktion man kan använda sig av för att känna av om detta är fallet och automatiskt dirigera om användaren till föregående sida fortfarande kvar i min funktion? Luddigt? :)
När jag remmade följande:
or die (mysql_error());
så gick han tillbaka till ursprungssidan utan att lagra något verkar det som.