Comment éviter les erreurs MySQL causées par des guillemets simples en PHP ?

Patricia Arquette
Libérer: 2024-11-02 21:07:02
original
228 Les gens l'ont consulté

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

Échapper aux guillemets simples en PHP pour MySQL

Vous avez rencontré un problème où un guillemet simple provoque une erreur MySQL lors de l'insertion de données dans une base de données. Ce problème survient lorsque les données ne sont pas correctement échappées avant d'être insérées.

Dans la première requête, l'échappement n'est pas nécessaire car vous insérez des données directement à partir d'un formulaire. Cependant, la deuxième requête récupère les données d'un enregistrement précédemment inséré et tente de les insérer dans une nouvelle table. Étant donné que les données peuvent contenir des guillemets simples non échappés, cela déclenche une erreur MySQL.

Pour éviter cette erreur, vous pouvez utiliser la fonction mysql_real_escape_string() pour échapper toutes les chaînes avant de les insérer dans la base de données. Cette fonction convertit les caractères spéciaux tels que les guillemets simples en leurs équivalents avec échappement, les empêchant ainsi de provoquer des erreurs.

Par exemple, dans la requête 2, remplacez la ligne suivante :

<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>
Copier après la connexion

Par :

<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>
Copier après la connexion

En échappant toutes les chaînes de cette manière, vous pouvez empêcher les guillemets simples de provoquer des erreurs MySQL et garantir que les données sont insérées correctement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!