Maison > développement back-end > Problème PHP > Comment utiliser la fonction mysqli_real_escape_string() en PHP ?

Comment utiliser la fonction mysqli_real_escape_string() en PHP ?

醉折花枝作酒筹
Libérer: 2023-03-10 11:18:01
avant
4022 Les gens l'ont consulté

Cet article vous présentera comment utiliser la fonction mysqli_real_escape_string() en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment utiliser la fonction mysqli_real_escape_string() en PHP ?

La fonction mysqli_real_escape_string() est une fonction intégrée à PHP qui est utilisée pour échapper tous les caractères spéciaux à utiliser dans les requêtes SQL. Utilisez-le avant d'insérer la chaîne dans la base de données, car cela supprime tous les caractères spéciaux susceptibles d'interférer avec l'opération de requête.

Lors de l'utilisation de chaînes simples, elles peuvent contenir des caractères spéciaux tels que des barres obliques inverses et des apostrophes (surtout si elles récupèrent des données directement à partir d'un formulaire dans lequel ces données ont été saisies). Ceux-ci sont considérés comme faisant partie de la chaîne de requête et interfèrent avec son bon fonctionnement.

<?php
  
$connection = mysqli_connect(
     "localhost" , "root" , "" , "Persons" ); 
         
// Check connection 
if (mysqli_connect_errno()) { 
     echo "Database connection failed." ; 
} 
   
$firstname = "Robert&#39;O" ;
$lastname = "O&#39;Connell" ;
   
$sql ="INSERT INTO Persons (FirstName, LastName) 
             VALUES ( &#39;$firstname&#39; , &#39;$lastname&#39; )";
   
   
if (mysqli_query( $connection , $sql )) {
      
     // Print the number of rows inserted in
     // the table, if insertion is successful
     printf( "%d row inserted.n" , $mysqli ->affected_rows);
}
else {
      
     // Query fails because the apostrophe in 
     // the string interferes with the query
     printf( "An error occurred!" );
}
   
?>
Copier après la connexion

Dans le code ci-dessus, la requête échoue car l'apostrophe est traitée comme faisant partie de la requête lorsqu'elle est exécutée à l'aide de mysqli_query(). La solution consiste à utiliser mysqli_real_escape_string() avant d'utiliser la chaîne dans la requête.

<?php
   
$connection = mysqli_connect(
         "localhost" , "root" , "" , "Persons" ); 
  
// Check connection 
if (mysqli_connect_errno()) { 
     echo "Database connection failed." ; 
} 
       
$firstname = "Robert&#39;O" ;
$lastname = "O&#39;Connell" ;
   
// Remove the special characters from the
// string using mysqli_real_escape_string
   
$lastname_escape = mysqli_real_escape_string(
                     $connection , $lastname );
                      
$firstname_escape = mysqli_real_escape_string(
                     $connection , $firstname );
   
$sql ="INSERT INTO Persons (FirstName, LastName)
             VALUES ( &#39;$firstname&#39; , &#39;$lastname&#39; )";
  
if (mysqli_query( $connection , $sql )) {
      
     // Print the number of rows inserted in
     // the table, if insertion is successful
     printf( "%d row inserted.n" , $mysqli ->affected_rows);
}
   
?>
Copier après la connexion

Le résultat est le suivant :

1 row inserted.
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal