如何识别mysqli_stmt_fetch返回0

时间:2017-09-16 19:42:15

标签: php if-statement pdo

当数据库没有值时,我怎么能显示“没有项目”。我的代码在哪里?我应该在哪里放else{ echo 'No item';}

if ($stmt = mysqli_prepare($link, "SELECT id,name,price,image FROM product Limit ?,8")) {

    mysqli_stmt_bind_param($stmt, "s", $page_1);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt,$ids,$title,$prc,$image);

        while (mysqli_stmt_fetch($stmt)) {

        $id = $ids;
        $pst_title = $title;
        $price = $prc;
        $pst_image = $image;
        $price = number_format($price, 2); 

        echo '    <article>';
        echo "    <img src='admin/gem/$pst_image' alt='images'></td>";
        echo "    <h3>$pst_title</h3>";
        echo "    <h4>$.$price</h4>";
        echo "    <a href='gem.php?id={$id}' class='btn-add'>View more</a>";
        echo '    </article>';                                      
        }

}

2 个答案:

答案 0 :(得分:1)

您可以通过访问num_rows属性来检查查询返回的行数。但是,要保持正确的值,您需要先使用mysqli_stmt_store_result()存储结果。请参阅下面的修订代码,并添加评论。

if ($stmt = mysqli_prepare($link, "SELECT id,name,price,image FROM product Limit ?,8")) {

    mysqli_stmt_bind_param($stmt, "s", $page_1);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt,$ids,$title,$prc,$image);
    mysqli_stmt_store_result($stmt); // Store the result into memory
    if (mysqli_stmt_num_rows($stmt)) { // Check the number of rows returned
        while (mysqli_stmt_fetch($stmt)) {

             $id = $ids;
             $pst_title = $title;
             $price = $prc;
             $pst_image = $image;
             $price = number_format($price, 2); 

             echo '    <article>';
             echo "    <img src='admin/gem/$pst_image' alt='images'></td>";
             echo "    <h3>$pst_title</h3>";
             echo "    <h4>$.$price</h4>";
             echo "    <a href='gem.php?id={$id}' class='btn-add'>View more</a>";
             echo '    </article>';                                      
        }
    } else {
        echo 'No item';
    }
}

答案 1 :(得分:1)

这将是一种更好的做事方式:http://php.net/manual/ro/mysqli-result.fetch-array.php

if ($stmt = mysqli_prepare($link, "SELECT id,name,price,image FROM product Limit ?,8")) {

    mysqli_stmt_bind_param($stmt, "s", $page_1);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);//thanks to Qirel
    mysqli_stmt_bind_result($stmt,$ids,$title,$prc,$image);
    if(mysqli_stmt_num_rows($stmt)>0){
        while (mysqli_stmt_fetch($stmt)) {

        $id = $ids;
        $pst_title = $title;
        $price = $prc;
        $pst_image = $image;
        $price = number_format($price, 2); 

        echo '    <article>';
        echo "    <img src='admin/gem/$pst_image' alt='images'></td>";
        echo "    <h3>$pst_title</h3>";
        echo "    <h4>$.$price</h4>";
        echo "    <a href='gem.php?id={$id}' class='btn-add'>View more</a>";
        echo '    </article>';                                      
        }
    }else{
            echo 'No item';
    }
}