Sven Rautenberg: Kollationsproblem bei MySQL?

Beitrag lesen

Moin!

Ich habe in meinem aktuellen Datenbank-Projekt (29 Tabellen) in sämtlichen Tabellen die Kollation utf8_general_ci verwendet. Wenn ich jetzt in einem varchar-Feld ein Hochkomma ' eingebe, erscheint es sowohl  bei der Anzeige des Tabelleninhalts mittels PHPMyAdmin als auch in den Pulldown-Auswahlmenüs meiner selbst programmierten Eingabemaske als '

PHP magic quotes.

(letzteres gilt auch, wenn ich nachträglich "manuell" über PHPMyAdmit das ' nach ' korrigiere!).

Userfehler oder Cache. ;)

Wenn ich nun dieser Eingabemaske einen Eintrag mit ' auswähle und die damit verbundene ID-Zahl (Primärschlüssel) in eine Relationstabelle (n-m-Beziehung) übertragen will, hängt sich MySQL in einer Endlosschleife auf und bricht nach 60 Sekunden mit einem Fatal Error ab. Liegt es an der falschen Kollation? Oder steckt der Fehler in der PHP-Programmierung der Eingabemaske?

Sicherlich ist irgendwas kaputt. Eigener Code ist der erste Verdächtige.

Hier die Zeile, in der die Endlosschleife auftritt:

while ($row == mysql_fetch_row($result)) // nur 1 Ergebniszeile!
          $ids[0]=$row[0];


>   
> Wenn ich mir testhalber den Inhalt von $result mit print\_r() anzeigen lasse, bekomme ich nur "Resource id#8", nicht etwa die ID-Zahl der abgefragten Tabellenzeile...  
  
Das ist vollkommen normal, Resultate einer DB-Abfrage sind Ressourcen - es sind "Pointer" auf Speicherbereiche, in denen das bereits von der Datenbank abgeholte Ergebnis zur Abfrage mit z.B. mysql\_fetch\_row() bereitliegt.  
  
Entscheidend ist das Debugging vorher: Welcher String kommt aus dem Formularfeld in $\_POST an? Und welches Ergebnis hat `get_magic_quotes_gpc()`{:.language-php}?  
  
 - Sven Rautenberg