我有下面的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;
答案 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)
问题出在连接字符串上。数据库名称是不同的,缺少一个大写字母。。。道歉,谢谢大家