Maison > base de données > tutoriel mysql > Comment insérer en toute sécurité des guillemets simples dans des bases de données MySQL à l'aide de PHP ?

Comment insérer en toute sécurité des guillemets simples dans des bases de données MySQL à l'aide de PHP ?

Patricia Arquette
Libérer: 2024-12-01 16:30:15
original
608 Les gens l'ont consulté

How to Safely Insert Single Quotes into MySQL Databases Using PHP?

Échapper aux guillemets simples en PHP pour l'insertion MySQL

Lors de l'insertion de données dans une base de données MySQL à l'aide de PHP, il est crucial d'échapper aux guillemets simples (') dans les données pour éviter tout comportement inattendu. Un problème courant survient lors de l'utilisation de guillemets simples dans une instruction MySQL et de la rencontre d'erreurs lors de la deuxième tentative d'insertion.

Requête 1

La première requête, qui insère des informations à partir d'un form dans la table job_log, fonctionne correctement car le guillemet simple dans le champ booking_name n'est pas explicitement échappé. Cependant, ce n'est pas une pratique recommandée.

$result = mysql_query("INSERT INTO job_log
(order_id, ...)
VALUES
('$order_id', '$supplier_id', ..., '$booking_name', '$address', ...)");
Copier après la connexion

Requête 2

La deuxième requête, qui insère les données de la base de données dans la table message_log, échoue lorsque le Le champ Primary_contact contient un guillemet simple. En effet, le guillemet simple dans la chaîne row->primary_email déclenche une erreur de syntaxe MySQL.

$query = mysql_query("INSERT INTO message_log
(order_id, ...)
VALUES
('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', ..., '$row->primary_email' ,..., '$message_content', '1')");
Copier après la connexion

Échapper à la solution à l'aide de mysql_real_escape_string

Pour résoudre ce problème, il est essentiel d'échapper correctement les guillemets simples dans les valeurs de chaîne insérées dans la base de données. Ceci peut être réalisé en utilisant la fonction mysql_real_escape_string(), qui échappe la chaîne pour se conformer à la syntaxe MySQL.

$esc_primary_email = mysql_real_escape_string($row->primary_email);

$query = mysql_query("INSERT INTO message_log
(order_id, ...)
VALUES
('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', ..., '$esc_primary_email' ,..., '$message_content', '1')");
Copier après la connexion

En échappant le guillemet simple à l'aide de mysql_real_escape_string(), la requête s'exécutera avec succès sans rencontrer d'erreurs, garantissant l'insertion correcte des données dans la base de données.

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