Statistik  Mitglieder gesamt: 68142  Mitglieder online: 4  Gäste online: 3 mehr...
Anzeige
| Thread: Gelöst | Unbekannte Interpunktion
 09.08.2008 13:41 Uhr
|
|
|
|
|
Hallo Leute,
ich hab mir einen Blog programmiert. Und wenn ich jetzt versuche einen Eintrag in die Datenbank zu speichern passiert nichts. Wenn ich mir dann den MySQL Befehl ausgeben lasse, und in phpMyAdmin einfüge kommt Unbekannte Interpunktion!
Hier die Anfrage: php:1
| $anfrage = "INSERT INTO `blog` VALUES(NULL,".mysql_real_escape_string($bltitle)."','".mysql_real_escape_string($bltext)."',CURRENT_TIMESTAMP,'".chkonline()."')"; |
Hier der MySQL Befehl: mysql:1
| INSERT INTO `blog` VALUES(NULL,Schulbeginn','Wie alle anderen Sch& |
Und nun noch der Fehler:
Zitat: Fehler
Es scheint einen Fehler in Ihrer MySQL-Abfrage zu geben. Die MySQL-Fehlerausgabe, falls vorhanden, kann Ihnen auch bei der Fehleranalyse helfen.
ERROR: Unbekannte Interpunktion @ 122
STR: :-|\
SQL: INSERT INTO `blog` VALUES(NULL,Schulbeginn','Wie alle anderen Sch�ler in Hessen muss ich jetzt auch wieder in die Schule :-|\r\n\r\n6 Wochen Sommerferien sind einfach zu kurz. Am Anfang denkt man: Boa, 6 Wochen keine Schule, und am Ende: Was??, schon zu Ende?\r\nSo aber zumindest hab ich jetzt wieder Informatik :-) und der Stundenplan sieht nur 31 Stunden die Woche vor.\r\n\r\nIn 3 Wochen bin ich dann auf Austausch (England), ich hoffe, dass ich von dort auch schreiben kann.',CURRENT_TIMESTAMP,'1')
SQL-Befehl:
INSERT INTO `blog` VALUES(NULL,Schulbeginn','Wie alle anderen Sch�ler in Hessen muss ich jetzt auch wieder in die Schule :-|\r\n\r\n6 Wochen Sommerferien sind einfach zu kurz. Am Anfang denkt man: Boa, 6 Wochen keine Schule, und am Ende: Was??, schon zu Ende?\r\nSo aber zumindest hab ich jetzt wieder Informatik :-) und der Stundenplan sieht nur 31 Stunden die Woche vor.\r\n\r\nIn 3 Wochen bin ich dann auf Austausch (England), ich hoffe, dass ich von dort auch schreiben kann.',CURRENT_TIMESTAMP,'1')
MySQL meldet: Dokumentation
#1064 - 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 '','Wie alle anderen Sch�ler in Hessen muss ich jetzt auch wieder in die Schule' at line 1
Wie kann ich den Doppelpunkt maskieren?
Ein Anführungszeichen hat gefehlt
Neues Problem siehe unten!
 2 mal bearbeitet
|
|
 09.08.2008 13:47 Uhr
|
|
|
|
|
hi!
ich kann mir ehrlich gesagt kaum vorstellen, dass der fehler im doppelpunkt liegt, da ich auch schon oft doppelpunkte ohne fehler hatte ;-)
mich verwundert aber der query, weil du einfach "INSERT INTO blog VALUES('blabla')" schreibst... eigentlich heißt dass doch: PHP:1
2
|
$anfrage = "INSERT INTO `blog` (id,title,inhalt,datum,online(?)) VALUES(NULL,".mysql_real_escape_string($bltitle)."','".mysql_real_escape_string($bltext)."',CURRENT_TIMESTAMP,'".chkonline()."')"; |
außerdem würde ich das mysql_real_escape_string() außerhalb des querys regeln...
___________________________ Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
|
|
 09.08.2008 14:34 Uhr
|
|
|
|
|
Zitat:Ein Anführungszeichen hat gefehlt
Ich hab das Problem bereits gelöst
Bei der Anfrage hat ein Anführungszeichen gefhlt:
$anfrage = "INSERT INTO `blog` VALUES(NULL, '".mysql_real_escape_string($bltitle)."', '".mysql_real_escape_string($bltext)."',CURRENT_TIMESTAMP,'".chkonline()."')";
Edit:// Wegen der query:
Ich habe PHP mit einem Buch gelernt. Da haben die die Query so wie ich geschrieben. Ich hab dass dann beibehalten weil es funktioniert und weil ich zu faul bin, mehr zu schreiben.
So und wegen deinem Fragezeichen ( online(?)): Die Funktion gibt den angemeldeten User oder false zurück
 2 mal bearbeitet
|
|
 09.08.2008 14:44 Uhr
|
|
|
|
|
hi!
und wenn chkonline() false zurück gibt wird trotzdem eingefügt?
dann kann ja jeder sachen eintragen?
cYa
___________________________ Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
|
|
 09.08.2008 15:03 Uhr
|
|
|
|
|
Zitat: hi!
und wenn chkonline() false zurück gibt wird trotzdem eingefügt?
dann kann ja jeder sachen eintragen?
cYa
Sorry, aber für wie blöd hältst du mich?
Natürlich wird vorher überprüft, ob der User angemeldet ist!
|
|
 09.08.2008 15:53 Uhr
|
|
|
|
|
___________________________ Faulheit ist wenn man mit einem Glas Milch in der Hand auf das nächste Erdbeben wartet um einen Milchshake zu trinken.
Chuck Norris hat mehr Kreditkarten als Max Mustermann!
Sido fragte mal "Wer ist Chuck Norris?". Seitdem trägt er eine Maske.
|
|
 31.08.2008 19:06 Uhr
|
|
|
|
|
Hab jetzt doch noch ein Problem!
Wenn ich Anführungszeichen in meinem Text habe (sowas: ') wird zusätzlich noch ein Backslash eingefügt!
Wie kann ich das verhindern, oder wie bekomme ich den wieder weg?
|
|
 31.08.2008 19:13 Uhr
|
|
|
|
|
die werden vermutlich durch ein mysql_real_escape_string hinzugefuegt und das ist auch ganz gut so, sonst koennte es ja eine injection geben.
beim Auslesen must du dann die funktion stripslashes verwenden.
|
|
 31.08.2008 19:25 Uhr
|
|
|
|
|
Zitat: die werden vermutlich durch ein mysql_real_escape_string hinzugefuegt und das ist auch ganz gut so, sonst koennte es ja eine injection geben.
beim Auslesen must du dann die funktion stripslashes verwenden. Naja, wenn ich das richtig verstehe, ist das nicht ganz perfekt so. Beim Auslesen können die Strings ruhig korrekt formatiert sein. Ein zusätzliches Anführungszeichen in der Datenbank und beim Auslesen erhält man, wenn magic-quotes aktiviert ist und man zusätzlich noch sauber mit mysql_real_escape_string() absichern will. Man muss daher immer eine eigene Funktion schreiben, die prüft, ob magic-quotes aktiviert ist ( get_magic_quotes_gpc()). Du musst beachten, dass du diese Funktion nur benutzten kannst, wenn eine MySQL-Verbindung aufgebaut ist.
Zu der Aussage oben noch: Aus folgendem String: MySQL:1
| INSERT INTO `table` (`col`) VALUES ('O\'Brian') |
wird in der Datenbank
 2 mal bearbeitet
|
|
 31.08.2008 19:50 Uhr
|
|
|
|
|
Hä?
PHP my Admin zeigt aber folgendes an:
Zitat: \'[galerie=12]\'
eingegeben hatte ich
Zitat: '[galerie=12]'
Es sollte eigentlich die selbe Anfrage sein, wie im Start-Post!
Mein Problem ist, dass ich mich grad aus dem Server ausgesperrt habe, und jetzt nichts überprüfen kann. (kann also momentan nur Theorie, den Code hab ich aber hier, nur keinen Interpreter)
Edit:// In PHP.net steht, dass Magic_quotes_gpc nicht mehr aktuell ist! Heißt das, dass ich diese Funktion besser auschalte? Dann brauch ich die Funktion von zombie3456 nicht mehr, oder?
 1 mal bearbeitet
|
|
|