Heim > Datenbank > MySQL-Tutorial > Wie kann ich MySQL-Fehler verhindern, die durch einfache Anführungszeichen in PHP-Strings verursacht werden?

Wie kann ich MySQL-Fehler verhindern, die durch einfache Anführungszeichen in PHP-Strings verursacht werden?

DDD
Freigeben: 2024-12-07 11:11:13
Original
572 Leute haben es durchsucht

How Can I Prevent MySQL Errors Caused by Single Quotes in PHP Strings?

Einfache Anführungszeichen in MySQL mit PHP umgehen

Stellen Sie sich das folgende Szenario vor, in dem zwei SQL-Anweisungen zum Bearbeiten von Daten verwendet werden. Die erste Anweisung fügt Informationen aus einem Formular in eine Datenbank ein, während die zweite Anweisung Daten aus der Datenbank abruft, eine E-Mail sendet und Transaktionsdetails protokolliert.

Problemidentifizierung

Das Problem tritt auf, wenn in der zweiten Anweisung aufgrund eines einfachen Anführungszeichens in einem Namensfeld, z. B. „O'Brien“, ein Fehler auftritt. Während die erste Anweisung ordnungsgemäß funktioniert, ohne dieses Zeichen zu maskieren, löst die zweite Anweisung einen MySQL-Fehler aus. Diese Ungleichheit kann zu Verwirrung führen.

Grundursache

Um dieses Problem zu beheben, ist es wichtig zu erkennen, dass Zeichenfolgen in PHP mit Escapezeichen versehen werden sollten, bevor sie in MySQL-Abfragen eingefügt werden . PHP bietet die Funktion mysql_real_escape_string(), die diese Zeichenfolgen effektiv maskiert und so eine ordnungsgemäße Einfügung und Fehlervermeidung gewährleistet.

Die Auswirkung von Magic Quotes

Das unterschiedliche Verhalten zwischen den beiden SQL -Anweisungen können auf die mögliche Aktivierung der PHP-Funktion magic_quotes_gpc zurückgeführt werden. Diese Funktion maskiert automatisch Zeichenfolgen, die aus Formularübermittlungen übernommen wurden (z. B. $_POST), sodass die Zeichenfolge „O'Brien“ in „O'Brien“ umgewandelt wird.

Wenn die Daten gespeichert und anschließend abgerufen werden, wird die Datenbank führt kein automatisches Escapen durch. Daher enthält die abgerufene Zeichenfolge „O'Brien“ das einfache Anführungszeichen ohne Escapezeichen, was bei Verwendung in Abfragen ein ordnungsgemäßes Escapen mit mysql_real_escape_string() erfordert, um Fehler zu vermeiden.

Überlegungen zum Escapen

Es ist wichtig, jede in SQL-Anweisungen verwendete Zeichenfolge zu maskieren, wie in der folgenden Überarbeitung gezeigt Beispiel:

$query = mysql_query("INSERT INTO message_log
(order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status)
VALUES
('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', '$row->supplier_id', '$row->primary_email' ,'$row->secondary_email', '$subject', '".mysql_real_escape_string($message_content)."', '1')");
Nach dem Login kopieren

Durch die konsequente Anwendung dieses Escape-Mechanismus können Entwickler MySQL-Fehler wirksam verhindern, die durch unerwartete einfache Anführungszeichen in Zeichenfolgen verursacht werden.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL-Fehler verhindern, die durch einfache Anführungszeichen in PHP-Strings verursacht werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage