Какова ошибка в этих кодах PHP? (Warning: mysqli_num_rows () exp.) (Warning: mysqli_fetch_array () exp …)

Я остаюсь руководитель, чтобы создавать feed в Android. Уже я создал базу данных и переслал scripts PHP в host, но у меня выходят эти ошибки:

Warning: mysqli_num_rows () expects parameter 1 to be mysqli_result, boolean given in/home/u216588924/public_html/feed.php он-лайн 16

Warning: mysqli_fetch_array () expects parameter 1 to be mysqli_result, boolean given in/home/u216588924/public_html/feed.php он-лайн 36 []

Здесь я оставляю им коды:

dbConnect.php

<?php
define('HOST','mysql.hostinger.mx');
define('USER','<usuario>');
define('PASS','<password>');
define('DB','<base>');

$con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect');
?>

feed.php

<?php 

//Getting the page number which is to be displayed  
$page = $_GET['page'];  

//Initially we show the data from 1st row that means the 0th row 
$start = 0; 

//Limit is 3 that means we will show 3 items at once
$limit = 3; 

//Importing the database connection 
require_once('dbConnect.php');

//Counting the total item available in the database 
$total = mysqli_num_rows(mysqli_query($con, "SELECT id from feed "));

//We can go atmost to page number total/limit
$page_limit = $total/$limit; 

//If the page number is more than the limit we cannot show anything 
if($page<=$page_limit){

    //Calculating start for every given page number 
    $start = ($page - 1) * $limit; 

    //SQL query to fetch data of a range 
    $sql = "SELECT * from feed limit $start, $limit";

    //Getting result 
    $result = mysqli_query($con,$sql); 

    //Adding results to an array 
    $res = array(); 

    while($row = mysqli_fetch_array($result)){
        array_push($res, array(
            "name"=>$row['name'],
            "publisher"=>$row['publisher'],
            "image"=>$row['image'])
            );
    }
    //Displaying the array in json format 
    echo json_encode($res);
}else{
        echo "over";
}

?>
6
задан 20.02.2017, 17:03
2 ответа

Предупреждения он выходит у тебя потому что mysqli_num_rows() я возвращаю тебе один false, который значит, что ты query у него есть неудача (ej.: он не находит поле или таблицу).

Чтобы знать и манипулировать неудачей ты можешь использовать следующий код:

if ($result) {

    $total = mysqli_num_rows($result);

} else {

    die(mysqli_error($con));    
}

Твой целый код:

 <?php
$page = $_GET['page'];    
$start = 0;    
$limit = 3;
require_once('dbConnect.php');

$result1 = mysqli_query($con, "SELECT id from feed");

if (!$result1) {

    // Mostrar error o hacer otra cosa
    die(mysqli_error($con));

} else {

    $total = mysqli_num_rows($result1);        
    $page_limit = $total / $limit;

    if ($page <= $page_limit) {

        $start = ($page - 1) * $limit;            
        $sql = "SELECT * from feed limit $start, $limit";            
        $result2 = mysqli_query($con, $sql);

        if (!$result2) {

            // Mostrar error o hacer otra cosa
            die(mysqli_error($con));

        } else {  

            $total = mysqli_num_rows($result2);    

            $res = [];

            while ($row = mysqli_fetch_array($result2)) {
                array_push($res,
                           [
                               "name"      => $row['name'],
                               "publisher" => $row['publisher'],
                               "image"     => $row['image']
                           ]
                );
            }
            echo json_encode($res);
        } 

    } else {
        echo "over";
    }    
}
3
ответ дан 24.11.2019, 12:51

Ошибка может быть из-за двух случаев:

  1. query сделан плохо и дает ошибка mysql, porlo, что cГіdigo: while($row = mysqli_fetch_array($result)){ дает ошибку
  2. Или не возвращает результаты. Для этого случая я рекомендую тебе использовать этот if: if ($result->num_rows > 0) { ты должен помещать это перед while
0
ответ дан 24.11.2019, 12:51

Ты вредишь консультация SQL если ты хочешь полное число реестров, ты был бы должен делать:

SELECT COUNT(column_name) FROM table_name;

0
ответ дан 03.12.2019, 19:27

Теги

Похожие вопросы