Wie verhindert man MySQL-Fehler, die durch einfache Anführungszeichen in PHP verursacht werden?

Patricia Arquette
Freigeben: 2024-11-02 21:07:02
Original
228 Leute haben es durchsucht

How to Prevent MySQL Errors Caused by Single Quotes in PHP?

Einfache Anführungszeichen in PHP für MySQL maskieren

Sie sind auf ein Problem gestoßen, bei dem ein einfaches Anführungszeichen beim Einfügen von Daten in MySQL einen MySQL-Fehler verursacht eine Datenbank. Dieses Problem tritt auf, wenn die Daten vor dem Einfügen nicht ordnungsgemäß maskiert werden.

Bei der ersten Abfrage ist keine Escape-Maßnahme erforderlich, da Sie Daten direkt aus einem Formular einfügen. Die zweite Abfrage ruft jedoch Daten aus einem zuvor eingefügten Datensatz ab und versucht, sie in eine neue Tabelle einzufügen. Da die Daten einfache Anführungszeichen ohne Escapezeichen enthalten können, löst dies einen MySQL-Fehler aus.

Um diesen Fehler zu verhindern, können Sie die Funktion mysql_real_escape_string() verwenden, um alle Zeichenfolgen zu maskieren, bevor Sie sie in die Datenbank einfügen. Diese Funktion wandelt Sonderzeichen wie einfache Anführungszeichen in ihre maskierten Entsprechungen um und verhindert so, dass sie Fehler verursachen.

Ersetzen Sie beispielsweise in Abfrage 2 die folgende Zeile:

<code class="php">$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', '$message_content', '1')");</code>
Nach dem Login kopieren

Durch:

<code class="php">$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', '".mysql_real_escape_string(date('Y-m-d H:i:s', time()))."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($from)."', '$row->supplier_id', '".mysql_real_escape_string($row->primary_email)."', '".mysql_real_escape_string($row->secondary_email)."', '".mysql_real_escape_string($subject)."', '".mysql_real_escape_string($message_content)."', '1')");</code>
Nach dem Login kopieren

Indem Sie alle Zeichenfolgen auf diese Weise maskieren, können Sie verhindern, dass einfache Anführungszeichen MySQL-Fehler verursachen, und sicherstellen, dass die Daten korrekt eingefügt werden.

Das obige ist der detaillierte Inhalt vonWie verhindert man MySQL-Fehler, die durch einfache Anführungszeichen in PHP 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!