Heim > Artikel > Backend-Entwicklung > Warum wirkt sich das Escapezeichen in einfache Anführungszeichen in PHP manchmal nur auf MySQL-Einfügungen aus?
Einfache Anführungszeichen in PHP beim Einfügen in MySQL maskieren
Dieser Artikel befasst sich mit dem Problem der Escapezeichen in einfachen Anführungszeichen in PHP beim Einfügen von Daten in MySQL.
Der bereitgestellte Code demonstriert zwei SQL-Anweisungen: eine zum Einfügen von Formulardaten in eine Datenbank und die andere zum Abrufen von Daten, zum Senden einer E-Mail und zum Protokollieren von Transaktionsdetails. Der Fehler tritt auf, wenn in der zweiten Anweisung ein einfaches Anführungszeichen vorhanden ist, in der ersten jedoch nicht.
Der Unterschied im Verhalten ergibt sich aus der Möglichkeit, dass magic_quotes_gpc aktiviert wird. Diese Funktion maskiert Zeichenfolgen aus $_GET, $_POST und $_COOKIES. Wenn die Daten gespeichert und erneut abgerufen werden, werden sie möglicherweise nicht automatisch maskiert.
Um dieses Problem zu beheben, sollten Sie jede Zeichenfolge in beiden Snippets mit mysql_real_escape_string() maskieren.
Beispiel mit mysql_real_escape_string():
<code class="php">$order_id = mysql_real_escape_string($order_id); $supplier_id = mysql_real_escape_string($supplier_id); ...</code>
Das Escapezeichen von Zeichenfolgen vor dem Einfügen in MySQL stellt sicher, dass einfache Anführungszeichen und andere potenziell problematische Zeichen korrekt behandelt werden, wodurch SQL-Injection-Schwachstellen und inkonsistente Abfrageausführung verhindert werden.
Das obige ist der detaillierte Inhalt vonWarum wirkt sich das Escapezeichen in einfache Anführungszeichen in PHP manchmal nur auf MySQL-Einfügungen aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!