query mysqli_select_db mysqli_real_escape_string mysqli_fetch_assoc mysqli_fetch_array mysqli_connect consulta php parameters mysqli

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.