任何人都可以帮助我。我正在尝试从表中获取所有数据。但它一直以布尔值返回。
irb(main):001:0> str = "ASimpleNoSpaceTitle"
=> "ASimpleNoSpaceTitle"
irb(main):050:0> str.scan(/[[:upper:]](?:[[:lower:]]+)?/)
=> ["A", "Simple", "No", "Space", "Title"]
irb(main):051:0>
给出的错误是:
<?php
$con = mysqli_connect("localhost", "root", "", "student");
$query = "SELECT * FROM `announcement` ORDER BY `announce_id` DESC";
$result = mysqli_query($con, $query);
while($row = mysqli_fetch_assoc($result)){
$data[] = $row;
}
echo json_encode($data);
?>
答案 0 :(得分:0)
请确保您在“公告”表格中有数据。
您可以使用mysqli_num_rows()函数检查结果集中返回的行数。
试试这个:
$con = mysqli_connect("localhost", "root", "", "student");
$query = "SELECT * FROM `announcement` ORDER BY `announce_id` DESC";
$result = mysqli_query($con, $query);
$rowcount = mysqli_num_rows($result); //returns number of rows
if($rowcount > 0) {
while($row = mysqli_fetch_assoc($result)){
$data[] = $row;
}
echo json_encode($data);
}
请告知我们对此相关的任何疑问/疑虑。
答案 1 :(得分:0)
因为mysqli_query返回false,$ result包含bool(false),而mysqli_fetch_assoc需要一个mysqli_result对象,当你给它一个bool时它抱怨了。我们不知道为什么mysqli_query返回false,并且由于您没有启用错误报告,PHP不会告诉您原因。您需要在代码中进行错误检查以便更早地捕获它,并让php告诉您哪里出错了。最简单的方法:使用
启动脚本<?php
error_reporting(E_ALL);
if(!mysqli_report(MYSQLI_REPORT_ALL)){
throw new RuntimeException("unable to set mysqli_report to MYSQLI_REPORT_ALL !");
}
我还建议运行一个错误处理程序,将错误转换为异常,比如
function exception_error_handler($severity, $message, $file, $line) {
if (!(error_reporting() & $severity)) {
// This error code is not included in error_reporting
return;
}
throw new ErrorException($message, 0, $severity, $file, $line);
}
set_error_handler("exception_error_handler");
现在php应该在发生错误时给出详细的报告,包括你的mysqli_query返回false的原因。