¿Cómo evitar Una inyección sql en php?
Usar mySQLi para crear sentencias preparadas
Crea una consulta SELECT con mySQLi. Crea una consulta INSERT con mySQLi. Crea una consulta UPDATE con mySQLi. Crea una consulta DELETE con mySQLi.
Utiliza el código de aquí abajo para seleccionar datos (SELECT) de una tabla usando una sentencia preparada con mySQLi. $name = $_GET['username'];  if ($stmt = $mysqli->prepare("SELECT password FROM tbl_users                                        WHERE name=?")) {      // Une una variable con el parámetro como cadena     $stmt->bind_param("s", $name);      // Ejecuta la sentencia     $stmt->execute();      // Obtén las variables de la consulta     $stmt->bind_result($pass);      // Busca los datos     $stmt->fetch();      // Muestra los datos     printf("La contraseña del usuario %s es %s\n", $name, $pass);      // Cierra la sentencia preparada     $stmt->close();  }   Nota: la variable $mysqli es el objeto de conexión de mySQLi. Utiliza el código de aquí abajo para insertar datos (INSERT) en una tabla utilizando sentencias preparadas con mySQLi. $name = $_GET['username']; $password = $_GET['password'];  if ($stmt = $mysqli->prepare("INSERT INTO tbl_users (name, password)                                            VALUES (?, ?)")) {      // Une las variables al parámetro como cadenas     $stmt->bind_param("ss", $name, $password);      // Ejecuta la sentencia     $stmt->execute();      // Cierra la sentencia preparada     $stmt->close();  }   Nota: la variable $mysqli es el objeto de conexión de mySQLi. Utiliza el código de aquí abajo para actualizar los datos (UPDATE) de una tabla utilizando sentencias preparadas con mySQLi. $name = $_GET['username']; $password = $_GET['password'];  if ($stmt = $mysqli->prepare("UPDATE tbl_users SET password = ?                                      WHERE name = ?")) {      // Une las variables al parámetro como cadenas     $stmt->bind_param("ss", $password, $name);      // Ejecuta la sentencia       $stmt->execute();      // Cierra la sentencia preparada     $stmt->close();  }   Nota: la variable $mysqli es el objeto de conexión de mySQLi. El código de aquí abajo muestra cómo eliminar (DELETE) datos de una tabla usando sentencias preparadas con mySQLi. $name = $_GET['username']; $password = $_GET['password'];  if ($stmt = $mysqli->prepare("DELETE FROM tbl_users                               WHERE name = ?")) {      // Une una variable con el parámetro como cadena     $stmt->bind_param("s", $name);      // Ejecuta la sentencia     $stmt->execute();      // Cierra la sentencia preparada     $stmt->close();  }   Nota: la variable $mysqli es el objeto de conexión de mySQLi.
Using mySQLi to Create Prepared Statements