数据库返回Bool而不是SQL

时间:2017-05-13 19:26:19

标签: php mysql mysqli

当我尝试运行我制作的搜索程序时,我遇到了问题。当我这样做时:

if (isset($query)) {
    $query = preg_replace("#[^0-9a-z]#i", "", $query);
    $query = array($db->q("select * from posts where title like $query") , 
    $db->q("select count(*) from posts where title like $query"));  

    if ($query[1] == 0){
        $out = "Sorry: There is no results";
    } else {
        while ($row = mysql_fetch_array($query[0])){
             $title = $row['title'];
             $exep = $row['exepert'];
             $out .= "<div>".$title."".$exep."</div>";
        }
    }
}

它总是说没有搜索结果,但当我强制它转到else语句时,它表示结果和计数都是布尔值(数字0)。

如果有人需要额外的代码来帮助我,请问!

提前致谢!

1 个答案:

答案 0 :(得分:0)

假设你的魔法$db对象有MySQLi的某种包装,MySQLi::query()MySQLi::prepare()都会在失败时返回false(请参阅Dock)。

您应该更改代码以直接处理它或在建立连接后立即执行此操作:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

它将导致所有SQL错误抛出异常。恕我直言,这使得开发过程更加容易。您还可以在持久性逻辑中集成这些异常,因为它们也会在完整性违规的情况下被抛出(例如,当用户尝试在标记为UNIQUE的列中复制时)。