Anführungszeichen in MySQL Query
AnnaA
- php
0 Andreas Korthaus0 small-step0 AnnaA
Hallo,
ich möchte gerne ein Array in eine MySQL DB speichern.
Dafür wandele ich es per serialize() um und versuche dann es per
Query abzuspeichern. Allerdings wird das Query einfach nicht durchgeführt.
Ich tippe, dass es daran liegt, dass in meinem geserializeten String Anführungszeichen drinstehen.
(Bsp für den gesirializten String: a:2:{s:11:"zugeordnete";a:4:{s:3:"see";s:3:"jup";s:3:"new";s:3:"jup";s:4:"edit";s:3:"jup";s:3:"del";s:3:"jup";}s:5:"alles";a:4:{s:3:"see";s:3:"jup";s:3:"new";s:3:"jup";s:4:"edit";s:3:"jup";s:3:"del";s:3:"jup";}}
Habt ihr eine Idee, was ich damit machen muss, dass es durch mein Query läuft?
Mein Query:
<?
MYSQL_CONNECT($server, $user, $passwort) or die ( "FEHLER beim Konnektieren!");
MYSQL_SELECT_DB($DB) or die ("FEHLER Datenbank nicht da!");
$kalender = serialize($kalender);
echo $kalender;
$result = MYSQL_QUERY("insert into " . $table_prefix . "_auth_groups (kalender) values (" . $kalender . ")");
echo $result;
MYSQL_CLOSE();
?>
Danke für Eure Hilfe,
Anna
Hi!
Ich tippe, dass es daran liegt, dass in meinem geserializeten String Anführungszeichen drinstehen.
(Bsp für den gesirializten String: a:2:{s:11:"zugeordnete";a:4:{s:3:"see";s:3:"jup";s:3:"new";s:3:"jup";s:4:"edit";s:3:"jup";s:3:"del";s:3:"jup";}s:5:"alles";a:4:{s:3:"see";s:3:"jup";s:3:"new";s:3:"jup";s:4:"edit";s:3:"jup";s:3:"del";s:3:"jup";}}
Habt ihr eine Idee, was ich damit machen muss, dass es durch mein Query läuft?
Was hälst Du von: http://www.php3.de/manual/de/function.mysql-escape-string.php?
Grüße
Andreas
hi,
Was hälst Du von: http://www.php3.de/manual/de/function.mysql-escape-string.php?
oder einfach http://www.php.net/manual/de/function.addslashes.php
grüße,
small-step
Hallo Andreas,
das hatte ich auch schon ausprobiert, allerdings ändert das nichts daran, dass es mir das Query ohne Fehlermeldung einfach nicht durchführt.
Gruß Anna
Hi!
das hatte ich auch schon ausprobiert, allerdings ändert das nichts daran, dass es mir das Query ohne Fehlermeldung einfach nicht durchführt.
Dann verwende es trotzdem auf alle Fälle und ändere die Query wie folgt:
$result = MYSQL_QUERY("insert into $table_prefix_auth_groups (kalender) values ('$kalender')");
und dann ein
echo mysql_error();
am besten mal bevor Du die Query änderst damit Du verstehst was MySQL für ein Problem hatte!
Grüße
Andreas
Hallo Andreas,
habe jetzt mal Dein Query eingebaut, hilft aber auch nix. Die Fehlermeldung lautet:
You have an error in your SQL syntax near '(kalender) values ('a:2:{s:11:"zugeordnete";a:4:{s:3:"see";s:3:"jup";s:3:' at line 1
Der durch das escape_string enstandene String (der ans Query übergeben wird) sieht folgendermaßen aus:
a:2:{s:11:"zugeordnete";a:4:{s:3:"see";s:3:"jup";s:3:"new";s:3:"jup";s:4:"edit";s:3:"jup";s:3:"del";s:3:"jup";}s:5:"alles";a:4:{s:3:"see";s:3:"jup";s:3:"new";s:3:"jup";s:4:"edit";s:3:"jup";s:3:"del";s:3:"jup";}}
Danke für Deine nette Hilfe :-)
Viele Grüße,
Anna
Hi!
Hm, das verstehe ich nicht. Ich sehe keinen Fehler in der Query. Gebe mal Deinen präfix direkt an und schreibe das SQL-Statement in eine Variable und gebe eben diese auch aus:
$sql = "
insert
into
deinprefix_auth_groups
(kalender)
values
('$kalender')
";
mysql_query($sql);
echo mysql_error()."<br><br>";
echo $sql;
Versuch es mal alternativ mit:
'$kalender'
";
Die Absätze damit man die genaue Zeile des Fehlers bekommt.
Grüße
Andreas
Hallo Andreas,
Du hattest das Query ja auch bei meinem Prefix geändert. Diese Änderung habe ich jetzt rückgängig gemacht, aber hinten Dein Query gelassen:
$mein_query = "insert into " . $table_prefix . "_auth_groups (kalender) values ('$kalender')";
Jetzt klappt es!
Super, danke für die Hilfe!
Anna
Hi!
Du hattest das Query ja auch bei meinem Prefix geändert. Diese Änderung habe ich jetzt rückgängig gemacht, aber hinten Dein Query gelassen:
Ja, hatte ich hinterher auch gesehen, war nicht so schlau - wobei ich da den Fehler nicht wirklich verstehem er müsste Sagen unknown Table oder sowas, naja, wenns jetzt läuft ist ja gut ;-)
Merke Dir nur die Vorgehensweise für nächste mal, vor allem die Verwenung von mysql_error(), und auch das einfügen von Zeilenumbrüchen hilft die fehlerhafte Stelle einzukreisen...
Grüße
Andreas