Heim >Backend-Entwicklung >PHP-Tutorial >Wie verhindert man MySQL-Fehler, die durch einfache Anführungszeichen in PHP verursacht werden?
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>
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>
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!