Php mysqli_num_类中的行函数错误

Php mysqli_num_类中的行函数错误,php,class,mysqli,Php,Class,Mysqli,这是我第一次学习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; } ... functi

这是我第一次学习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']);
        }
    }
我已经用手动mysqli\u query()检查了它,然后使用num\u query()函数,它工作得很好。

对不起我的英语

您的
列表查询()
返回数组。而您的
num_查询
需要mysqli_结果作为参数

因此,当您编写
$qsearch=$db->list\u query()
时,您将得到一个数组;然后将该数组传递给
num\u query

也许,您的
num\u查询应该如下所示:

function num_query($result) {
     return count($result);
}

$q
列表查询
功能的范围内定义。将
$q
指定为全局变量或类属性会很有用。但是我在escape\u query($q)函数中也使用了$q,但是在使用print\u r()之后,如果结果是数组,我就可以很好地实现这一点。谢天谢地,我真的很想知道,如果你能简单地使用PDO,它有本地方法,比如
fetchAll()
rowCount()
,为什么你要在
mysqli
接口周围使用对象包装器呢?我对PDO还是有点了解:)好吧,相信我,这会对你有很大的好处。围绕mysqli编写对象包装就像重新发明一个方轮。
function num_query($result) {
     return count($result);
}