php - mysqli_select_db - parámetros en MySQLi
mysqli_real_escape_string (1)
Estoy usando PHP con MySQLi, y estoy en una situación en la que tengo consultas como
SELECT $fields FROM $table WHERE $this=$that AND $this2=$that2
Hasta ahora he escrito un código que empalma una matriz que le doy, por ejemplo:
$search = array(name=michael, age=20) //turns into
SELECT $fields FROM $table WHERE name=michael AND age=20
¿Hay una manera más eficiente de hacer esto?
Estoy bastante preocupado por las inyecciones de MySQL, esto parece muy vulnerable. ¡Gracias!
Curiosamente, el título de tu pregunta es básicamente la respuesta. Desea hacer algo como esto, utilizando las consultas parametrizadas de mysqli:
$db = new mysqli(<database connection info here>);
$name = "michael";
$age = 20;
$stmt = $db->prepare("SELECT $fields FROm $table WHERE name = ? AND age = ?");
$stmt->bind_param("si", $name, $age);
$stmt->execute();
$stmt->close();
Más información en la sección mysqli del manual , específicamente las funciones relacionadas con MySQLi_STMT .
Tenga en cuenta que personalmente prefiero usar PDO sobre mysqli, no me gustan todas las cosas bind_param
/ bind_result
que hace mysqli. Si tengo que usarlo, escribo un envoltorio para que funcione más como PDO.