É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', ...)");
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')");
É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')");
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!