> Faqs > Solucionar el error TypeError no detectado: mysqli_fetch_row(): Argumento #1 en PHP

Solucionar el error TypeError no detectado: mysqli_fetch_row(): Argumento #1 en PHP

Tengo un problema con el argumento que estoy utilizando para que no me permita registrar un alumno 2 veces .. soy estudiante de desarrollo de software...

Advertencia : Variable no definida $resultado en C:\xampp\htdocs\html-vec\opcion2\insertar.php en la línea 26  
Error fatal : TypeError no detectado: mysqli_fetch_row(): Argumento #1 ($resultado) debe ser del tipo mysqli_result, nulo dado en C:\xampp\htdocs\html-vec\opcion2\insertar.php:26 Rastreo de pila: #0 C:\xampp\htdocs\html-vec\opcion2\insertar.php(26): mysqli_fetch_row(NULL) # 1 C:\xampp\htdocs\html-vec\opcion2\insertar.php(9): buscaRepetido('1', '1', Object(mysqli)) #2 {main} lanzado en C:\xampp\htdocs\ html-vec\opcion2\insertar.php en la línea 26
<?php
       $conexion= mysqli_connect("localhost","root","","bdinstituto");
        $apenom= $_POST ['apenom'];
        $legajo= $_POST ['legajo'];
        $dni= $_POST ['dni'];
        $fecnac= $_POST ['fecnac'];
        $edad= $_POST ['edad'];
        $fecing= $_POST ['fecing'];
        if ( buscaRepetido($apenom, $dni, $conexion)==1) {
         echo "Alumno ya ingresado pruebe con otro!";
        } else {
         $consulta= "INSERT INTO alumno( apenom, legajo, dni, fecnac, edad, fecing) VALUES ('$apenom', '$legajo','$dni','$fecnac','$edad','$fecing')";
         $resultado= mysqli_query($conexion, $consulta);
           if (!$resultado){
              echo "No se inserto!";
           }
           else {
              header("Location: index.php");
           }

        }
       
       
         function buscaRepetido($apenom, $dni, $conexion){
            $consulta="SELECT * FROM alumno WHERE apenom='$apenom' and dni='$dni'";
            if( mysqli_fetch_row($resultado) > 0 ){
               return 1;
            } else {
               return 0;
            }
         }
         mysql_close($conexion);
 ?>

Respuestas

Hola!

Si te fijas en tu código, estás invocando a la función antes de que exista la variable $resultado.

Tampoco es una buena idea referenciar una variable dentro de la función que no ha sido creada dentro de esa función.

Pero el mayor problema es que la función está haciendo uso de $resultado sin haber ejecutado la sentencia SQL.

Tienes esto actualmente:

function buscaRepetido($apenom, $dni, $conexion){
    $consulta="SELECT * FROM alumno WHERE apenom='$apenom' and dni='$dni'";
    if( mysqli_fetch_row($resultado) > 0 ){
       return 1;
    } else {
       return 0;
    }
}

Sería algo como esto para que funcione:

function buscaRepetido($apenom, $dni, $conexion){
    $consulta="SELECT * FROM alumno WHERE apenom='$apenom' and dni='$dni'";
    $resultado = mysqli_query($conexion, $consulta);
    if( mysqli_fetch_row($resultado) > 0 ){
       return 1;
    } else {
       return 0;
    }
}

Simplemente tienes que ejecutar la sentencia SQL con mysqli_query() y guardarte el resultado.

Alberto
526 13 37 15