当我尝试运行我制作的搜索程序时,我遇到了问题。当我这样做时:
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)。
如果有人需要额外的代码来帮助我,请问!
提前致谢!
答案 0 :(得分:0)
假设你的魔法$db
对象有MySQLi的某种包装,MySQLi::query()
和MySQLi::prepare()
都会在失败时返回false(请参阅Dock)。
您应该更改代码以直接处理它或在建立连接后立即执行此操作:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
它将导致所有SQL错误抛出异常。恕我直言,这使得开发过程更加容易。您还可以在持久性逻辑中集成这些异常,因为它们也会在完整性违规的情况下被抛出(例如,当用户尝试在标记为UNIQUE
的列中复制时)。