Home  >  Q&A  >  body text

php - mysql_num_rows()返回值为0时无法进入判断?

$arr = array();
$len = conunt($str); //$str是一个数组
for ($i = 0; $i < $len; $i++) {
    $sql = 'SELECT * FROM table where data="'.$str[$i].'"';
    $result = mysqli_query($conn, $sql);
    $num = mysqli_num_rows($result);
    echo $num;  //  str中有些数据是不存在的,不存在的会输出0
    while ($rows = mysqli_fetch_array($result, MYSQL_ASSOC)) {
        echo $num;
        if($num == 0) {
            echo 'not found';
        }
    }

}

找到原因了 , 在while循环内外输出的$num的值不一样,循环外如果数据不存在会输出0,但是在循环内却会输出1,求解。。。

PHP中文网PHP中文网2767 days ago814

reply all(3)I'll reply

  • 迷茫

    迷茫2017-04-11 10:20:27

    你把前面的一些代码贴一下看看啊,这样怎么给你解答。。。

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-11 10:20:27

    mysqli_num_rows — 取得结果集中行的数目
    所以如果$result中没有数据$num 就不会进入循环,这两个是矛盾的吧

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-11 10:20:27

    $num 没有自减啊。在while的循环体底部加上$num--。这样每读取一行,$num就会减1,直至等于0,输出'not found'

    reply
    0
  • Cancelreply