致命错误:调用未定义的方法 mysqli_result::rowCount()

fdf*_*dfd 1 php mysqli count fetch

我在从 MYSQL 切换到 MYSQLi 时遇到问题。这些代码在 MYSQL 中运行良好,但是当我将连接更改为 MYSQLi 时,我在获取查询时收到了上述错误。如何使用 mysqli 函数获取我的查询?

代码:

        function __construct(){
    $this->link = mysqli_connect('localhost', 'root', '', 'ajax_rating');

    if (!$this->link) {
     die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
    }

    echo 'Success... ' . mysqli_get_host_info($this->link) . "\n";

                }

    function getItems($id = null){
        if(isset($_GET['id']))
        {
            $query = $this->link->query("SELECT * FROM items WHERE id = '$id'");
        }
        else
        {
            $query = $this->link->query("SELECT * FROM items");
        }
        $rowCount = $query->rowCount();
        if($rowCount >= 1)
        {
            $result = $query->fetchAll();
        }
        else
        {
            $result = 0;
        }
        return $result;
Run Code Online (Sandbox Code Playgroud)

Abd*_*lam 6

num_rows

读取MySQLi row_count

所以最终的答案是

function getItems($id = null)
{
    if(isset($_GET['id']))
    {
        $query = $this->link->query("SELECT * FROM items WHERE id = '$id'");
    }
    else
    {
        $query = $this->link->query("SELECT * FROM items");
    }
    $rowCount = $query->num_rows;//change here
    if($rowCount >= 1)
    {
        $result = $query->fetchAll();
    }
    else
    {
        $result = 0;
    }
    return $result;
}
Run Code Online (Sandbox Code Playgroud)

编辑 01

使用mysqli_fetch_all代替fetchAll()

mysqli_fetch_all($query,MYSQLI_ASSOC);
Run Code Online (Sandbox Code Playgroud)

所以回答世界是

    if($rowCount >= 1)
    {
        $result = mysqli_fetch_all($query,MYSQLI_ASSOC);
    }
Run Code Online (Sandbox Code Playgroud)