这是我第一次用PHP学习课程,我试图在数据库中进行简单的搜索 这是我班上的一些剧本:
class DB {
...
function list_query($query) {
$ns = array();
$q = mysqli_query($this->con_(), $query);
while($n = mysqli_fetch_assoc($q)) {
$ns[] = $n;
}
return $ns;
}
...
function num_query($q) {
$num = mysqli_num_rows($q);
return $num;
}
...
}
搜索脚本:
$key = "foo";
$qsearch = $db->list_query("SELECT * FROM posts WHERE content LIKE '%".$db->escape_query($key)."%'");
$num = $db->num_query($qsearch);
if ($num == 0) {
echo "<h2>not found</h2>";
} else {
echo "<h2>result for : ".$key."</h2>";
foreach($qsearch as $val) {
echo "<h4>".$val['title']."</h2>";
echo strip_tags($val['content']);
}
}
但是num_query()函数有错误 警告:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, array given in class/db.php on line 30.
我用手动mysqli_query()检查了它,然后使用num_query()函数,它运行良好。
抱歉我的英文
答案 0 :(得分:0)
您的list_query()
返回数组。并且您的num_query
期望mysqli_result作为参数。
所以,当你写$qsearch = $db->list_query()
时,你得到一个数组;然后将该数组传递给num_query
。
也许,您的num_query
应该是:
function num_query($result) {
return count($result);
}