Estoy usando este código para ejecutar una instrucción select en MySQLi
$stmt = $mysqli->prepare('SELECT * FROM admin WHERE forename = ? and surname = ? '); $stmt->bind_param('vv', $forename, $surname); $foremame = "Forename"; $surname = "Surname"; $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()) { echo $row["sequence"]; } $stmt -> close(); $mysqli -> close();
Pero recibo un error fatal que dice:
Fatal error: Call to undefined method mysqli_stmt::get_result()
Porque no tengo instalado MySQLnd pero no puedo instalarlo porque estoy usando un servidor web compartido y el host no lo instalará.
¿Cómo puedo usar una statement preparada para MySQLi sin tener que tener MySQLnd instalado ya que quiero evitar ataques de inyección SQL?
Puede usar $stmt->bind_result()
para vincular los resultados a variables, luego $stmt->fetch()
para obtener los resultados en las variables enlazadas.
$stmt->execute(); $stmt->bind_result($var1, $var2, $var3, ...); // Use more meaningful variable names while ($stmt->fetch()) { echo $var3; // to get the third column in the results }
Recomiendo enumerar los nombres de columnas explícitamente en la cláusula SELECT
, en lugar de *
, ya que este método de acceso a los resultados depende del orden específico de las columnas.