SQL-Abfrage: Ich kollabier gleich!! HILFE!!!
teddy86
- php
Hi!
Folgende SQL-Abfrage:
$resNEW = mysql_query("INSERT INTO cms_guestbook (name, ort, datum, nachricht, email, internet, online, ip) VALUES ('$name', '$ort', '$datum', '$nachricht', '$email', '$internet', 0, '$ip'", $linkID)or die(mysql_error());
bringt den Fehler:
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 '' at line 1
hervor. Ich hab kein Plan wo der Fehler steckt. kann mir bitte jemand helfen. Ich sitze hier schon 2 Sunden an deiser Abfrage und explodier gleich :/
Danke im Vorraus.
Teddy
Hi!
hervor. Ich hab kein Plan wo der Fehler steckt. kann mir bitte jemand helfen. Ich sitze hier schon 2 Sunden an deiser Abfrage und explodier gleich :/
Computer ausschalten, ne Tüte rauchen oder wahlweise nen Bierchen trinken und morgen nochmal probieren.
Hallo teddy86,
gib mal dein Query aus, dann sehen wir weiter.
Gruß,
Dieter
Hallo Teddy,
$resNEW = mysql_query("INSERT INTO cms_guestbook (name, ort, datum, nachricht, email, internet, online, ip) VALUES ('$name', '$ort', '$datum', '$nachricht', '$email', '$internet', 0, '$ip'", $linkID)or die(mysql_error());
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 '' at line 1
Also benötigst Du den Klartext der SQL-Anweisung. Wie Dieter bereits schrieb: Gebe diese zu Debugzwecken aus.
hervor. Ich hab kein Plan wo der Fehler steckt. kann mir bitte jemand helfen. Ich sitze hier schon 2 Sunden an deiser Abfrage und explodier gleich :/
Wo bist Du? Weil ich gegebenenfalls rechtzeitig in Deckung gehen will :-)
Weitestgehend empfehle ich Dir das gleiche, das ich bereits kürzlich empfohlen habe.
Freundliche Grüße
Vinzenz
Hi!
Folgende SQL-Abfrage:
$resNEW = mysql_query("INSERT INTO cms_guestbook (name, ort, datum, nachricht, email, internet, online, ip) VALUES ('$name', '$ort', '$datum', '$nachricht', '$email', '$internet', 0, '$ip'", $linkID)or die(mysql_error());
Was soll das doppelte Anführungszeichen neben dem $ip ??
Hi teddy86!
Ich hab kein Plan wo der Fehler steckt.
Achte auf die Klammerung.
Ich sitze hier schon 2 Sunden an deiser Abfrage und explodier gleich :/
Passiert(e) mir auch häufig. Du solltest mit aller Ruhe herangehen. Alex hat dir gute Tipps gegeben. =)
MfG H☼psel
$resNEW = mysql_query("INSERT INTO cms_guestbook (name, ort, datum, nachricht, email, internet, online, ip) VALUES ('$name', '$ort', '$datum', '$nachricht', '$email', '$internet', 0, '$ip'", $linkID)or die(mysql_error());
Drei Sachen noch (vermutlich ist Dir bereits bis zum Erbrechen geholfen worden):
1.) Die andere INSERT-Syntax unter MySQL ist besser.
2.) Immer schön den tatsächlich abgesandten SQL-String angeben.
3.) Das Problem im Vorfeld bestmöglich _selbst_ isolieren.
Hallo Teddy,
$resNEW = mysql_query("INSERT INTO cms_guestbook (name, ort, datum, nachricht, email, internet, online, ip) VALUES ('$name', '$ort', '$datum', '$nachricht', '$email', '$internet', 0, '$ip'", $linkID)or die(mysql_error());
Grunsätzlich solltest du bei solchen Problemen erstmal die Ratschläge der anderen befolgen, und dir den fertig zusammengebastelten Query ausgeben lassen. Außerdem solltest du deine SQL-Abfragen auch vernünftig formatiert im Quellcode eingeben, dann würde dir hier nämlich der Fehler wahrscheinlich sofort auffalen:
$resNEW = mysql_qeury("INSERT INTO cms_guestbook
(name, ort, datum, nachricht, email, internet,
online, ip)
VALUES ('$name', '$ort', '$datum', '$nachricht',
'$email', '$internet', 0, '$ip'",
^^
$linkID) or die (mysql_error());
Schöne Grüße,
Johannes
Wenn du es immer nocht nicht gefunden hast: Die schließende Klammer für VALUES (...) fehlt ;-)
Außerdem solltest du deine SQL-Abfragen auch vernünftig formatiert im Quellcode eingeben, [...]
"Vernünftig formatiert" ist für mich eher sowas:
$resNEW =
mysql_query
(
"INSERT INTO
cms_guestbook
(
name,
ort,
datum,
nachricht,
email,
internet,
online,
ip
)
VALUES
(
'$name',
'$ort',
'$datum',
'$nachricht',
'$email',
'$internet',
0,
'$ip'
"
);
Wobei zu hoffen ist, dass mysql_query() die query verpackt.
Übrigens kann man hier auch "sehr schön" sehen, dass die oben genutzte INSERT-Syntax sehr schlecht und eine permanente Fehlerquelle ist (gerade auch beim Kopieren von Codeteilen), da Namen und Werte voneinander getrennt gehalten werden. Bei MySQL gibt es nach meiner Kenntnis eine zweite, dem UPDATE ähnliche, Syntax. Diese wäre zu verwenden. MS SQL Server kennt diese Syntax nicht und nutzt die im obigen Beispiel verwendete.
Übrigens ist m.E. auch sowas Mist (scheint aber sehr verbreitet zu sein):
function f{
[...]
}
Besser:
function f
{
[...]
}
Es gibt für die verschiedenen Notationen sogar eigene Ideenlehren und Namen, die dümmsten Notationen versuchen Platz zu sparen und/oder die Performance zu erhöhen.
Am schönsten (leider auch am geschwätzigsten) ist COBOL (Schon mal gemovt? ;), am hässlichsten Perl (gewollt hässlich, aber man kanns ja gemäss der Philosophie von Perl ("alles ist auf verschiedene Art und Weise zu kodieren") auch schöner kodieren).