Recibo errores y advertencias en mysqli

ACTUALIZAR:

Tengo un par de errores y advertencias con los que necesito ayuda en mysqli:

Fatal error: Call to undefined method mysqli_stmt::get_result() in ... on line 63 

En mi código a continuación, ¿alguien sabe cómo se pueden tratar estas advertencias y errores?

 $query = "SELECT * FROM Teacher WHERE TeacherAlias = ?"; // prepare query $stmt=$mysqli->prepare($query); // You only need to call bind_param once $stmt->bind_param("s",$getid); // execute query $stmt->execute(); //get results $result = $stmt->get_result(); $numrows = mysqli_num_rows($result); if ($numrows == 0){ // don't use $mysqli->prepare here $query = "SELECT * FROM Teacher WHERE TeacherUsername = ?"; // prepare query $stmt=$mysqli->prepare($query); // You only need to call bind_param once $stmt->bind_param("s",$getuser); // execute query $stmt->execute(); } 

Primero debe recuperar un object mysqli_result , con algo como …

 $res = $stmt->get_result(); 

… luego busca el número de filas de este object (no $stmt ):

 $numrows = mysqli_num_rows($res); 

ACTUALIZACIÓN: el método get_result está disponible en PHP 5.3+ solamente, para las versiones anteriores se debe usar el siguiente enfoque:

 // $stmt preparing code goes here... $stmt->execute(); $stmt->store_result(); $num_rows = $stmt->num_rows; doSomethingWith($num_rows); // processing cycle: $stmt->bind_result($some_param, $another_param); while ($stmt->fetch()) { doSomethingElseWith($some_param, $another_param); } $stmt->free_result(); $stmt->close(); 

Como nota al margen, dos recomendaciones: 1) probablemente sería más rápido usar una sola consulta aquí y search valor en los campos ProfesorAlias ​​y Nombre de usuario del profesor simultáneamente (con el operador OR, como TeacherAlias = ? OR TeacherUsername = ? ); 2) sería más fácil trabajar con columnas explícitamente indicadas ( SELECT id, TeacherAlias AS alias, TeacherUsername AS username... ) en lugar de simplemente ( SELECT * ) en su consulta.

No estoy acostumbrado a trabajar con msqli, pero trataré de responderte, así que antes que nada, di el progtwig, "si el resultado de la request es igual a 0, entonces reinícialo todo de nuevo. Esto no es muy bueno, está usando resources para nada. Como dijo Raina77ow, quiere usar

 $res = $stmt->get_result(); 

y esto:

 $numrows = mysqli_num_rows($res); 

entonces ya no necesitas más tu condición si …

Primero debe search sus datos o free_result() .

 $stmt->fetch(); 

Luego pasa esto a mysqli_num_rows()

Lo que yo sugeriría es, saltándome la búsqueda, si no lo necesitas y estás haciendo:

 $stmt->num_rows; 

Esto contará el número de filas en su resultado sin necesidad de recuperarlo y borrará el cursor.