Php SQL错误:mysqli\u fetch\u assoc()期望参数1是mysqli\u结果

Php SQL错误:mysqli\u fetch\u assoc()期望参数1是mysqli\u结果,php,mysqli,Php,Mysqli,我有下面的MySQL查询,在执行var_dump时返回bool 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($

我有下面的MySQL查询,在执行var_dump时返回bool 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; 

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

$sql = "SELECT enBody FROM page WHERE pageName='wine'";
$result= $db->query($sql) or die(mysqli_error($db));
null和mysqli\u fetch\u assoc仅接受mysqli结果

因此,您只需要放置一个基本的if-else语句,检查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";
}

您正在将面向对象样式过程样式混合使用

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

有关程序样式,请参阅:

有关面向对象的样式,请参阅:

给你的代码:

面向对象风格:

<?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;

问题出在连接字符串上。有一个不同的数据库名称,缺少一个大写字符…愚蠢的我。抱歉和感谢大家

请尝试使用此选项,而不是
mysqli_fetch_assoc
:$enOutput=$en->fetch_assoc(),请测试发生了什么。@bilahmed没有重复项。@Rafael在$enIt中保存查询时,我认为问题进一步恶化了,返回了0个结果。当我在phpMyAdmin SQL上尝试同样的方法时,它返回1行…非常简单strange@Marius您是否使用了与phpMyAdminSQL中所述完全相同的查询