【问题标题】:while loop stopped at 1st loop because mysqli errorwhile 循环在第一个循环处停止,因为 mysqli 错误
【发布时间】:2017-01-13 02:31:38
【问题描述】:

错误读取

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?

【问题讨论】:

  • 循环中的某些内容覆盖了 $r 的值
  • 这是什么意思?
  • 循环中的某些内容正在分配给变量$hasil。显示[Code to execute]
  • @JohnConde 不是$r$hasil
  • 现在是真正的代码吗?那么问题出在diskon_stok.php,它重用了$hasil变量。

标签: php mysqli while-loop


【解决方案1】:

diskon_stok.php 中的某事正在做:

$hasil = <something>;

&lt;something&gt; 是一个数字。

所以当循环重复并调用mysqli_fetch_array($hasil)时,变量不再包含查询结果,它包含这个数字,调用失败。

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

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

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

【讨论】:

  • 是的,谢谢。 diskon_stok.php 中还有另一个变量 $hasil,其值为 double
【解决方案2】:

问题在于while循环。 While 循环用于布尔(真/假)表达式,当您真的想循环遍历列表本身时。更简单地说,while 循环基本上是一个 if 语句,只要它是真的,就会一遍又一遍地询问。对于您的要求,我会推荐一个 foreach 循环。你可以这样设置:

$resultArray = mysqli_fetch_array($hasil);

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

这应该更适合您的需求。

【讨论】:

  • while循环没问题,问题在于包含的php文件中与$hasil同名的变量,该变量值覆盖了mysqli_result
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-31
  • 2021-09-15
  • 1970-01-01
  • 2022-11-30
  • 2015-10-20
  • 2014-07-13
相关资源
最近更新 更多