0

Estoy intentando conectar con php mysql,me dieron un código antiguo,usa el mysql clásico entonces quise usar mysqli pero me sale un error en

mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given"

vi otros foto pero no se ajusta a nada,quisiera saber el porque me sale error

function consultaUsuarios($conexion){
$conex= new mysqli('localhost','root','root','call_center');
$salida='';
//Realizamos la Consulta que nos traera todos los registros de la BD
$query="select id,marca,producto,nombre,area
 from creacion";
$total=mysqli_query($conex,$query);
$consulta=$conex->query($query);
 //Validamos si hay o no registros
 if(!$total || mysqli_num_rows($total) == 0){
     while($dato=mysqli_fetch_array($total)){
         $salida.='
            <tr>
                <td>'.$dato["id"].'</td>
                <td>'.$dato["marca"].'</td>
                <td>'.$dato["producto"].'</td>
                <td>'.$dato["nombre"].'</td>
                <td>'.$dato["area"].'</td>
                <td class="'.returnStatus($dato["status"]).'">'.$dato["status"].'</td>
                <td ><a class="btn btn-small">Editar</a></td>
            </tr>
         ';
     }
 }
 else
 {
     $salida='
        <tr id="sinDatos">
            <td colspan="7">No hay Registros en la Base de Datos, Tu codigo!!</td>
        </tr>
     ';
 }

La conexión la pongo dentro solo para practicar algo rápido

Dev. Joel
  • 23,229
  • 3
  • 25
  • 44
  • Verifique la consulta , sus campos están correctamente especificados? este error es porque la la consulta presenta errores. y retorna `false` – Dev. Joel Jun 07 '17 at 17:04

2 Answers2

0

Tiene inconsistencias tu código. ¿En dónde utilizas $consulta? Estas haciendo un query que no estas usando. Segundo. La lógica de validación si la consulta trajo datos o no está mal hecha.

function consultaUsuarios(){//ELIMINA EL PARAMETRO DE CONEXIÓN POR QUE NO LA ESTÁS USANDO, YA TIENES UNA DENTRO
$conex= mysqli_connect('localhost','root','root','call_center'); //CORREGI TU CONEXIÓN A MYSQLI
$salida='';
//Realizamos la Consulta que nos traera todos los registros de la BD
$query="select id,marca,producto,nombre,area
 from creacion";
$total=mysqli_query($conex,$query);
//QUITAMOS LA CONSULTA DE MYSQL Y NOS QUEDAMOS CON MYSQLI
 //Validamos si hay o no registros
 if($total && mysqli_num_rows($total) < 0){//LA LOGICA ESTA MAL, AHÍ ESTÁ CORREGIDA
     while($dato=mysqli_fetch_array($total)){
         $salida.='
            <tr>
                <td>'.$dato["id"].'</td>
                <td>'.$dato["marca"].'</td>
                <td>'.$dato["producto"].'</td>
                <td>'.$dato["nombre"].'</td>
                <td>'.$dato["area"].'</td>
                <td class="'.returnStatus($dato["status"]).'">'.$dato["status"].'</td>
                <td ><a class="btn btn-small">Editar</a></td>
            </tr>
         ';
     }
 }
 else
 {//SE TE BARRIÓ PONER EL PUNTO PARA CONCATENAR LA SALIDA
     $salida.='
        <tr id="sinDatos">
            <td colspan="7">No hay Registros en la Base de Datos, Tu codigo!!</td>
        </tr>
     ';
 }
echo $salida; //MUESTRALA
Alberto Siurob
  • 6,620
  • 4
  • 22
  • 59
0

Estas duplicando la consulta:

//$total=mysqli_query($conex,$query); consulta 1

$consulta=$conex->query($query);     nuevamente consulta

luego tu validación esta expresada erroneamente:

if(!$total || mysqli_num_rows($total) == 0)

indicas que tu consulta tiene que ser falso y no debe de tener registros tu consulta, debes de cambiar tu condición.

if(mysqli_num_rows($consulta) > 0)

luego al querer recorrer tu consulta igual esta expresada erroneamente:

while($dato=mysqli_fetch_array($total))

al hacer eso nunca recorrera los valores corrigeme si me equivoco.

te recomendari hacer lo siguiente:

    $array = mysqli_fetch_all($consulta); // almacenar todos tus registros dentro de un variable de tipo array

        foreach ($array as $item) // recorrer registro por registro
        {
           // imprimir los valores aqui 
            echo '<tr>';// lo que hago a partir de aqui es opcional, solo si quieres personalizar tus columnas
            foreach ($item as $do)//recorres las columnas del registro
            {
                echo '<td>'.$do.'</td>';//imprimes la columna
            }
            echo '<tr>';
        }