Error: mysqli_num_rows () expects parameter 1 to be mysqli_result

0

I have a problem with a query in php and mysql, I do not know why it shows the following error in two lines of my code, it shows it in line 35 and line 45:

  

Warning: mysqli_num_rows () expects parameter 1 to be mysqli_result,   boolean given in C: \ wamp64 \ www \ Seccion 15 valija \ php \ buscar.php on   line 35

     

Warning: mysqli_fetch_array () expects parameter 1 to be   mysqli_result, boolean given in C: \ wamp64 \ www \ Section 15   valise \ php \ buscar.php on line 45

This is my line 35

  

$ rows = mysqli_num_rows ($ query);

and this is line 45

  

while ($ results = mysqli_fetch_array ($ query))

this is the file where I have the code:

<?php

require('conexion.php');
//Variable de búsqueda
$consultaBusqueda = $_POST['valorBusqueda'];
//Filtro anti-XSS
$caracteres_malos = array("<", ">", "\"", "'", "/", "<", ">", "'", "/");
$caracteres_buenos = array("& lt;", "& gt;", "& quot;", "& #x27;", "& #x2F;", "& #060;", "& #062;", "& #039;", "& #047;");
$consultaBusqueda = str_replace($caracteres_malos, $caracteres_buenos, $consultaBusqueda);

//Variable vacía (para evitar los E_NOTICE)
$mensaje = "";

//Comprueba si $consultaBusqueda está seteado
if (isset($consultaBusqueda)) {

    //Selecciona todo de la tabla mmv001
    //donde el nombre sea igual a $consultaBusqueda,
    //o el apellido sea igual a $consultaBusqueda,
    //o $consultaBusqueda sea igual a nombre + (espacio) + apellido
    $consulta = mysqli_query($conn, "SELECT * FROM valija_nueva
    WHERE CONVERT(nombre_empresa USING utf8) COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
    OR quien_envia COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR autorizacion COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR CONVERT(nombre_empresa USING utf8) COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR CONVERT(junta USING utf8) COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR fecha_contrato COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR fecha_entrega COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR fecha_recepcion COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
  OR CONVERT(nombre_sindicato USING utf8) COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
    OR CONCAT( CONVERT(nombre_empresa USING utf8),' ',quien_envia) COLLATE UTF8_SPANISH_CI LIKE '%$consultaBusqueda%'
    ");

    //Obtiene la cantidad de filas que hay en la consulta
    $filas = mysqli_num_rows($consulta);

    //Si no existe ninguna fila que sea igual a $consultaBusqueda, entonces mostramos el siguiente mensaje
    if ($filas === 0) {
        $mensaje = "<p>No hay ningún usuario con ese nombre y/o apellido</p>";
    } else {
        //Si existe alguna fila que sea igual a $consultaBusqueda, entonces mostramos el siguiente mensaje
        echo 'Resultados para <strong>'.$consultaBusqueda.'</strong>';

        //La variable $resultado contiene el array que se genera en la consulta, así que obtenemos los datos y los mostramos en un bucle
        while($resultados = mysqli_fetch_array($consulta)) {
            $no_control = $resultados['no_control'];
            $contenido_valija = nl2br($resultados['contenido_valija']);
            $fecha_recepcion = $resultados['fecha_recepcion'];
        $quien_envia = $resultados['quien_envia'];
        $mensajero = $resultados['mensajero'];
                $otro = $resultados['mensajero_temporal'];
        $origen = $resultados['origen'];
        $destino = $resultados['destino'];
        $autorizacion = $resultados['autorizacion'];
        $nombre_empresa = nl2br($resultados['nombre_empresa']);
        $junta = nl2br($resultados['junta']);
        $nombre_sindicato = nl2br($resultados['nombre_sindicato']);
        $tipo_documento = $resultados['tipo_documento'];
        $rubrica = $resultados['rubrica'];
        $fecha_contrato = $resultados['fecha_contrato'];
        $firma_secgral = $resultados['firma_secgral'];
        $devolucion = $resultados['devolucion'];
        $fecha_entrega = $resultados['fecha_entrega'];
        $voletin = $resultados['voletin'];
        $observacion = $resultados['observacion'];
        $estatus = $resultados['estatus'];
        $usuario = $resultados['usuario'];
                $revisiones = $resultados['revisiones'];

            //Output
            $mensaje .= '
        <div class="table-responsive">
        <link rel="stylesheet" href="estilos/diseño.css">
          <table class="table table-bordered">
            <tbody>
            <tr>
              <td><strong>Numero de control</strong></td>
              <td><strong>Contenido de la valija</strong> </td>
              <td><strong>Fecha de recepcion de documentos</strong></td>
              <td><strong>Quien envio esta valija</strong></td>
              <td><strong>Mensajero</strong></td>
                            <td><strong>Mensajero temporal</strong></td>
              <td><strong>Origen</strong></td>
              <td><strong>Destino</strong></td>
              <td><strong>Valija autorizada por</strong></td>
              <td><strong>Nombre de la empresa</strong></td>
              <td><strong>Junta</strong></td>
              <td><strong>Nombre del sindicato</strong></td>
              <td><strong>Tipo de documento</strong></td>
              <td><strong>Rubrica:</strong></td>
              <td><strong>Fecha del contrato</strong></td>
              <td><strong>Firma del secretario general</strong></td>
              <td><strong>Devolucion</strong></td>
              <td><strong>Fecha de entrega de valija</strong></td>
              <td><strong>Boletin</strong></td>
              <td><strong>Observaciones</strong></td>
              <td><strong>Estatus</strong></td>
              <td><strong>Usuario</strong></td>
                            <td><strong>Revisiones</strong></td>
            </tr>
            <tr>
               <td>' . $no_control . '</td>
                     <td width="500px" nowrap>' . $contenido_valija . '</td>
                     <td width="150px" nowrap>' . $fecha_recepcion . '</td>
               <td width="150px" nowrap>' . $quien_envia . '</td>
               <td width="150px" nowrap>' . $mensajero . '</td>
                             <td width="150px" nowrap>' . $otro . '</td>
               <td width="150px" nowrap>' . $origen . '</td>
               <td width="150px" nowrap>' . $destino . '</td>
               <td width="150px" nowrap>' . $autorizacion . '</td>
               <td width="500px" nowrap>' . $nombre_empresa . '</td>
               <td width="500px" nowrap>' . $junta . '</td>
               <td width="500px" nowrap>' . $nombre_sindicato . '</td>
               <td width="150px" nowrap>' . $tipo_documento . '</td>
               <td width="150px" nowrap>' . $rubrica . '</td>
               <td width="150px" nowrap>' . $fecha_contrato . '</td>
               <td width="150px" nowrap>' . $firma_secgral . '</td>
               <td width="150px" nowrap>' . $devolucion . '</td>
               <td width="150px" nowrap>' . $fecha_entrega . '</td>
               <td width="150px" nowrap>' . $voletin . '</td>
               <td width="300px" nowrap>' . $observacion . '</td>
               <td width="150px" nowrap>' . $estatus . '</td>
               <td width="150px" nowrap>' . $usuario . '</td>
                             <td width="150px" nowrap>' . $revisiones . '</td>
               </tr>
            </tbody>
          </table>
          </div>';

        };//Fin while $resultados

    }; //Fin else $filas

  };//Fin isset $consultaBusqueda

  //Devolvemos el mensaje que tomará jQuery
  echo $mensaje;

?>
    
asked by Kike hatake 20.03.2018 в 22:33
source

1 answer

0

If the mysqli_query is not going well, it returns FALSE, which is the warning it gives you.

link

I imagine that if before calling the num_rows you call mysqli_error () you can see the error that the query has given.

Greetings

    
answered by 21.03.2018 в 17:06