PHP | Función mysqli_real_escape_string()

La función mysqli_real_escape_string() es una función incorporada en PHP que se usa para escapar todos los caracteres especiales para usar en una consulta SQL. Se utiliza antes de insertar una string en una base de datos, ya que elimina cualquier carácter especial que pueda interferir con las operaciones de consulta. 
Cuando se usan strings simples, hay posibilidades de que se incluyan caracteres especiales como barras invertidas y apóstrofes (especialmente cuando obtienen datos directamente de un formulario donde se ingresan dichos datos). Estos se consideran parte de la string de consulta e interfieren con su funcionamiento normal. 
 

php

<?php
 
$connection = mysqli_connect(
    "localhost", "root", "", "Persons");
        
// Check connection
if (mysqli_connect_errno()) {
    echo "Database connection failed.";
}
  
$firstname = "Robert'O";
$lastname = "O'Connell";
  
$sql="INSERT INTO Persons (FirstName, LastName)
            VALUES ('$firstname', '$lastname')";
  
  
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!");
}
  
?>

En el código anterior, la consulta falla porque los apóstrofes se consideran parte de la consulta cuando se ejecuta mediante mysqli_query(). La solución es usar mysqli_real_escape_string() antes de usar las strings en la consulta.
 

php

<?php
  
$connection = mysqli_connect(
        "localhost", "root", "", "Persons");
 
// Check connection
if (mysqli_connect_errno()) {
    echo "Database connection failed.";
}
      
$firstname = "Robert'O";
$lastname = "O'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 ('$firstname_escape', '$lastname_escape')";
 
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);
}
  
?>

Producción: 
 

1 row inserted. 

Publicación traducida automáticamente

Artículo escrito por ArkadyutiBanerjee y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *