Warning: mysqli_num_rows () expects parameter 1 to be mysqli_result, boolean given

1

The function performs well the registration but does not respect the if and shows:

  

Warning: mysqli_num_rows () expects parameter 1 to be mysqli_result, boolean given in C: \ xampp \ htdocs \ projectphp \ model \ teacher.php on line 30

public function nueva($clave,$nombre,$a_paterno,$a_materno,$correo,$hash)
{
    //error clave repetida=1, correo repetido=2, 
        require '../model/conexion.php';
        $error=0;
        $consulta_clave=$conn->prepare("select clave from colegio.profesores where clave=?;");
        $consulta_clave->bind_param("s",$clave);
        $cr=$consulta_clave->execute();
        $consulta_clave->close();
        echo "cr  {$cr}";
        $consulta_correo=$conn->prepare("select clave from colegio.profesores where correo=?;");
        $consulta_correo->bind_param("s",$correo);
        $mr=$consulta_correo->execute();
        $consulta_correo->close();

        $inserta=$conn->prepare("insert into colegio.profesores 
            (clave,nombre,a_paterno,a_materno,correo,contrasena) 
            values (?, ?, ?, ?, ?, ?);");
        $inserta->bind_param('ssssss', $clave,$nombre,$a_paterno, $a_materno, $correo,$hash);

        //$cr=mysqli_query($conn,"select clave from colegio.profesores where clave='{$clave}';");
        //$mr=mysqli_query($conn,"select clave from colegio.profesores where correo='{$correo}';");
        $compara=mysqli_num_rows($cr);
        if ($compara<1) 
        {

            if (mysqli_num_rows($mr)==0) 
            {
                $inserta->execute();

                //mysqli_query($conn,"insert into colegio.profesores (clave,nombre,a_paterno,a_materno,correo,contrasena) values ('".$clave."','".$nombre."','".$a_paterno."','".$a_materno."','".$correo."','".$hash."');");       
            }
            else{$error=2;}
            $inserta->close();
        }
        else
        {
            $error=1;
        }
            mysqli_close($conn);
        return $error;
}
    
asked by omar 04.01.2018 в 01:42
source

1 answer

1

You must store the result when your query is done

 $consulta_correo->execute();
 //Almacena tu resultado
 $consulta_correo->store_result();
 //Obtenemos las filas
 $num_rows = $consulta_correo->num_rows;

 //Comparacion
 if($num_rows>0){
   /**Tu codigo**/
  }else{
  /**Tu codigo**/
  }

You can see more about this Here

    
answered by 04.01.2018 / 02:11
source