SQL错误:mysqli_fetch_assoc()期望参数1为mysqli_result

时间:2018-08-17 07:26:39

标签: php mysqli

我有下面的MySQL查询,在执行var_dump时返回布尔布尔false。正如我在phpMyAdmin中测试的那样,mySQL语句是正确的。有什么建议可以解决这个问题吗?

<?php
    $sql = "SELECT enBody FROM page WHERE pageName='wine'";
    $en = $db->query($sql);

    var_dump($enOutput=mysqli_fetch_assoc($en));
    var_dump($en);//returns bool false too
    while($enOutput=mysqli_fetch_assoc($en)) :
        $enDisplay=$enOutput['enBody'];                 
        echo $enDisplay;
    endwhile; 

3 个答案:

答案 0 :(得分:0)

最好的猜测是SQL查询无法找到请求的行,因此假设您在sql查询中没有任何错误,它将返回。 如果您不确定查询,请使用

替换查询来进行检查
$sql = "SELECT enBody FROM page WHERE pageName='wine'";
$result= $db->query($sql) or die(mysqli_error($db));

null和 mysqli_fetch_assoc 仅接受 mysqli结果

因此,您只需要放置一个基本的 if 语句,以检查 SQL查询是否返回了结果

尝试一下,让我知道它是否有效

我基本上只使用了一个函数 mysqli_num_rows ,该函数返回查询获取的行数,然后有条件地进行检查

$sql = "SELECT enBody FROM page WHERE pageName='wine'";
$result= $db->query($sql);
if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
       print_r($row);

    }
} else {
    echo "0 results";
}

答案 1 :(得分:0)

您正在将面向对象的样式过程样式混合。

使用面向对象样式时,不应使用mysqli_ *函数,因为它们属于过程样式。

有关程序样式,请参见:http://php.net/manual/en/function.mysqli-connect.php

有关面向对象的样式,请参见:http://php.net/manual/en/mysqli.construct.php

为您编码:

面向对象的样式:

<?php
$sql = "SELECT enBody FROM page WHERE pageName='wine'";

if($en = $db->query($sql)):
    /* fetch associative array */
    while($enOutput=$en->fetch_assoc($en)) :
        $enDisplay=$enOutput['enBody'];                 
        echo $enDisplay;
    endwhile; 
    /* free result set */
    $en->free();
endif;

另外,对于 fetch_assoc ,请参阅:http://php.net/manual/en/mysqli-result.fetch-assoc.php

答案 2 :(得分:0)

问题出在连接字符串上。数据库名称是不同的,缺少一个大写字母。。。道歉,谢谢大家