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

Comment utiliser la fonction mysqli_real_escape_string() en PHP ?

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-06-04 17:34:303930parcourir

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!" );
}
   
?>

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);
}
   
?>

Le résultat est le suivant :

1 row inserted.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer