【发布时间】:2014-01-28 15:40:19
【问题描述】:
这是我第一次学习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() 函数,它运行良好。
对不起我的英语
【问题讨论】:
-
$q在list_query函数的范围内定义。将$q分配为全局变量或类属性会很有用。 -
但我在 escape_query($q) 函数上也使用了 $q,但有一些效果很好