Heim  >  Artikel  >  Backend-Entwicklung  >  Wie verwende ich die Funktion mysqli_real_escape_string() in PHP?

Wie verwende ich die Funktion mysqli_real_escape_string() in PHP?

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-06-04 17:34:304008Durchsuche

In diesem Artikel erfahren Sie, wie Sie die Funktion mysqli_real_escape_string() in PHP verwenden. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Wie verwende ich die Funktion mysqli_real_escape_string() in PHP?

Die Funktion mysqli_real_escape_string() ist eine in PHP integrierte Funktion, die zum Escapen aller Sonderzeichen zur Verwendung in SQL-Abfragen verwendet wird. Verwenden Sie dies, bevor Sie die Zeichenfolge in die Datenbank einfügen, da dadurch alle Sonderzeichen entfernt werden, die den Abfragevorgang beeinträchtigen könnten.

Bei der Verwendung einfacher Zeichenfolgen können diese Sonderzeichen wie Backslashes und Apostrophe enthalten (insbesondere, wenn Daten direkt aus einem Formular abgerufen werden, in das solche Daten eingegeben wurden). Diese gelten als Teil der Abfragezeichenfolge und beeinträchtigen deren ordnungsgemäße Funktion.

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

Im obigen Code schlägt die Abfrage fehl, da bei Verwendung von mysqli_query() zur Ausführung des Apostrophs das Apostroph als Teil der Abfrage betrachtet wird. Die Lösung besteht darin, mysqli_real_escape_string() zu verwenden, bevor der String in der Abfrage verwendet wird.

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

Die Ausgabe ist wie folgt:

1 row inserted.

Das obige ist der detaillierte Inhalt vonWie verwende ich die Funktion mysqli_real_escape_string() in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen