Declaraciones preparadas de MySQLi que muestran un error debido a que MySQLnd no está instalado

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.