while循环在第一个循环停止,因为mysqli错误

时间:2017-01-13 02:31:39

标签: php mysqli while-loop

错误读取

  

mysqli_fetch_array()要求参数1为mysqli_result,在第744行的C:\ xampp \ htdocs \ beta \ jawa \ isi.php中给出双倍

第744行是:while($r=mysqli_fetch_array($hasil))

完整代码:

<?php
$cari = "SELECT * FROM produk WHERE " ;
for ($i=0; $i<=$jml_kata; $i++) {
    $cari .= "deskripsi LIKE '%$pisah_kata[$i]%' OR nama_produk LIKE '%$pisah_kata[$i]%'";
    if ($i < $jml_kata ) {
        $cari .= " OR "; 
    }
}

$cari .= " ORDER BY id_produk DESC LIMIT 12";
$hasil  = mysqli_query($con,$cari);

while($r=mysqli_fetch_array($hasil)) {

    include "diskon_stok.php";
    echo"<div class='container_produk'>
        <a href='produk-$r[id_produk]-$r[produk_seo].html'><img src='http://images.rajafotocopy.com/foto_produk/$r[gambar]'/></a>
        <div class='detail'> 
            <span style='font-family : sui'>$r[nama_produk]</span><br />
            $divharga
        </div>
    </div>";
}
?>

我不明白mysqli_result有什么问题......?它返回第一个循环,但之后它抛出一个错误,并期望参数1是mysqli_result?

2 个答案:

答案 0 :(得分:1)

diskon_stok.php中正在做的事情:

$hasil = <something>;

其中<something>是一个数字。

因此,当循环重复并调用mysqli_fetch_array($hasil)时,变量不再包含查询结果,它包含此数字,并且该调用失败。

更改您用于查询结果的变量的名称。

$result  = mysqli_query($con,$cari);

while($r=mysqli_fetch_array($result)){

答案 1 :(得分:0)

问题是while循环。 while循环用于布尔(true / false)表达式,当你真的想循环遍历列表本身时。更简单地说,while循环基本上是一个if语句一遍又一遍地问,只要它是真的。对于你要求的,我会推荐一个foreach循环。您可以将其设置为以下内容:

$resultArray = mysqli_fetch_array($hasil);

foreach($resultArray as $r){
      [Code to execute]
}

这应该更符合您的需求。