为什么说布尔是给出的

时间:2016-09-27 02:42:21

标签: php json database boolean

任何人都可以帮助我。我正在尝试从表中获取所有数据。但它一直以布尔值返回。

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

2 个答案:

答案 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的原因。