INSERT INTO funktioniert nicht mehr

Microhome

Erfahrenes Mitglied
Hallo ihr lieben,
ich habe ein echt witziges Problem, welches noch nie aufgetreten ist. Ich kann nämlich keine Links mehr in meiner Datenbank speichern.Wenn ich über phpmyadmin gehe funktioniert das ganze, wenn ich aber über mein PHP Script gehe fügt er keine a hrefs mehr ein, da diese wohl anscheinend Anführungszeichen enthalten. Es kommt folgender 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 'http://www.tutorials.de">Tutorials.de", "Rene Bartkowiak", "mod_news_1185270' at line 1

Das Script ist im Prinzip ganz einfach:
Code:
$titel = $_POST["titel"];
$inhalt = "<a href=\"http://www.tutorials.de\">Tutorials.de</a>";
$timenow = time();
echo "<b>News verwalten # News hinzufügen</b><br><br>";
mysql_query("INSERT INTO content VALUES (\"\", \"$titel\", \"$inhalt\", \"$cmsbenutzer\", \"mod_news_$timenow\")");
die(mysql_error());

Habt ihr irgendeine Ahnung woran das liegen kann


Beste Grüße
Rene
 
Das funktioniert so auch, allerdings kann es zu Problemen führen, wenn später mal Spalten hinzugefügt werden.
 
Ich denke es liegt an dem Anführungszeichen nach der Domain?
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 'http://www.tutorials.de">Tutorials.de", "Rene Bartkowiak", "mod_news_1185270' at line 1
 
Richtig! Es fehlen die Werte die Eingetragen werden sollen. MySQL weiss nicht wohin bzw in welcher Tabelle /abschnitte geschrieben werden sollen.

probiere es so:

PHP:
<?
$titel = $_POST["titel"];
$inhalt = "<a href=\"http://www.tutorials.de\">Tutorials.de</a>";
$timenow = time();
echo "<b>News verwalten # News hinzufügen</b><br><br>";
mysql_query("insert into content (titel,inhalt,cmsbenutzer,mod_news) values ('".$titel."', '".$inhalt."', '".$cmsbenutzer."', '".mod_news_$timenow."')");
die(mysql_error());
?>


@ Microhome Deine Signatur enthält doch die ganze Zeit deine Lösung die du suchst:
Lösungsvorschlag:
Wenn es mit dem mysql_query(...); Probleme gibt, pack ein die(mysql_error()); dahinter und guck dir den MySQL-Fehler an!
 
Zuletzt bearbeitet:
müsste der SQL-Befehl nicht so aussehen?
Code:
INSERT INTO content 
(
 `erstes_feld`,
 `zweites_feld`,
 `drittes_feld`,
 `viertes_feld`,
 `fuenftes_feld`
)
VALUES
(
 "",
 "$titel",
 "$inhalt",
 "$cmsbenutzer",
 "mod_news_$timenow"
)

bzw. solltest du wie schon von splat gesagt, die Funktion mysql_real_escape_string verwenden ;)

EDIT: oops zu langsam^^
 
Zuletzt bearbeitet:
Das ging ja schnell :-)
Ich versuche es mal mit mysql_real_escape_string. Wohin die Werte geschrieben werden müssen ist ein optionaler Parameter. Wenn du nur VALUES angibst dann schreibt er das so in der Reihenfolge. Hatte damit auch nie Probleme, also daran liegts denke ich definitiv nicht.


Grüße
Rene


// Edit: Funktioniert mit mysql_real_escape_string. Hatte dieses Problem echt noch nie, komisch..
 
Zuletzt bearbeitet:
Zurück