【问题标题】:Uncaught Error: Cannot use object of type mysqli_result as array [duplicate]未捕获的错误:无法使用 mysqli_result 类型的对象作为数组 [重复]
【发布时间】:2016-12-17 09:25:18
【问题描述】:

致命错误:未捕获的错误:无法使用 mysqli_result 类型的对象作为 C:\xampp\htdocs\tourist\AddFavorites.php:20 中的数组 堆栈跟踪:

0 {主}

扔进去 C:\xampp\htdocs\tourist\AddFavorites.php上线

$user_id = $_POST['user_id'];
$place_id = $_POST['place_id'];

$sth = ("select count(*) as count from favorites WHERE place_id=$place_id
    AND user_id=$user_id");
        
       $result = $con->query($sth);

if($result['count']>0){
            
             $output = array(
            'status'=>"0",
            'operation'=>"already exists"
            );
            
            echo json_encode($output);
            $db = null;
            
            return;
        }
        else{
..}

第 20 行是 if($result['count']>0) 我已经寻找现有的解决方案,但它仍然无法正常工作。

【问题讨论】:

  • 查看手册,看看query 的返回值是多少(或者只是var_dump 它)

标签: php mysqli


【解决方案1】:

mysqli_result 不能这样使用。它基本上代表了通过查询获取的所有行,因此您需要通过它的一种方法从中获取一行(查看手册)。

你可能想要这样的东西

$result = $con->query($sth);
$row = $result->fetch_array();
if($row['count']>0){
 // ...
}

【讨论】:

    【解决方案2】:

    运行查询后

    $result = $con->query($sth);
    

    $result 不是数组,它通常是资源或 TRUE 或 FALSE。您可以像这样检查结果是否有错误

    if (!$result){
    // This is an error
    }
    

    如果你想检查行数,你可以这样做

    if (mysql_num_rows ($result) > 0){
    // No or rows greater than 0
    }
    

    我强烈建议查看 PHP 手册

    http://php.net/manual/en/function.mysql-query.php

    或者更好的使用mysqli

    http://php.net/manual/en/book.mysqli.php

    你现在应该真正使用的...

    【讨论】:

    • 不要混用 mysqlmysqli。这是完全不同的 api。
    • @u_mulder 我知道,它们是完全不同的 API,但不知何故,我发现 mysqli (i) 改进后更适合从 mysql 开始
    猜你喜欢
    • 2017-11-12
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2019-02-26
    • 1970-01-01
    • 2017-06-05
    • 2017-12-08
    • 2013-07-27
    相关资源
    最近更新 更多