开发者社区> 问答> 正文

on a non-object 400 请求报错 

Call to a member function fetchColumn() on a non-object

采用pdo方式连接mysql

$rs=$conn->query("select count(*) from member where id=0 ");
$res=$conn->query("select count(*) from member where mess=0 ");
$total = $rs->fetchColumn();
$res_total = $res->fetchColumn();
不知道为什么提示Call to a member function fetchColumn() on a non-object 而且是第二个 fetchColumn() ,为什么第一个fetchColumn() 不出错呢?$total也有值,很奇怪

展开
收起
kun坤 2020-05-29 17:50:58 489 0
1 条回答
写回答
取消 提交回答
  • 引用来自“Roger蛋蛋”的答案

    http://www.php.net/manual/en/pdostatement.fetchcolumn.php
    string PDOStatement::fetchColumn ([ int $column_number = 0 ] ) Returns a single column from the next row of a result set or FALSE if there are no more rows.
    Warning There is no way to return another column from the same row if you use PDOStatement::fetchColumn() to retrieve data.
    没啥好解决的,就是判断下query的返回值是否为FALSE
    var_dump($res);
    跟流程没屌关系 像 @Roger蛋蛋 说的,看query之后返回的值 ###### fetchColumn把资源给抓取完了, 也就是说用完了. 这跟调用一次的函数原理相同. ######

    引用来自“Tuesday”的答案

    fetchColumn把资源给抓取完了, 也就是说用完了. 这跟调用一次的函数原理相同.
    抓取完了就不能再调用了?那如何解决呢?第二个sql怎么查询 ###### http://www.php.net/manual/en/pdostatement.fetchcolumn.php
    string PDOStatement::fetchColumn ([ int $column_number = 0 ] ) Returns a single column from the next row of a result set or FALSE if there are no more rows.
    Warning There is no way to return another column from the same row if you use PDOStatement::fetchColumn() to retrieve data.
    没啥好解决的,就是判断下query的返回值是否为FALSE
    var_dump($res);
    ######

    引用来自“苏翰”的答案

    引用来自“Tuesday”的答案

    fetchColumn把资源给抓取完了, 也就是说用完了. 这跟调用一次的函数原理相同.
    抓取完了就不能再调用了?那如何解决呢?第二个sql怎么查询
    你抓过一次了, 已经知道结果了, 为什么要抓第二次? 第一次的结果你不保存的? ######

    引用来自“Tuesday”的答案

    引用来自“苏翰”的答案

    引用来自“Tuesday”的答案

    fetchColumn把资源给抓取完了, 也就是说用完了. 这跟调用一次的函数原理相同.
    抓取完了就不能再调用了?那如何解决呢?第二个sql怎么查询
    你抓过一次了, 已经知道结果了, 为什么要抓第二次? 第一次的结果你不保存的?
    我2个sql都要查询 ######

    引用来自“苏翰”的答案

    引用来自“Tuesday”的答案

    引用来自“苏翰”的答案

    引用来自“Tuesday”的答案

    fetchColumn把资源给抓取完了, 也就是说用完了. 这跟调用一次的函数原理相同.
    抓取完了就不能再调用了?那如何解决呢?第二个sql怎么查询
    你抓过一次了, 已经知道结果了, 为什么要抓第二次? 第一次的结果你不保存的?
    我2个sql都要查询
    $rs=$conn->query("select count(*) from member where id=0 "); 3 $total=$rs->fetchColumn(); 2 $res=$conn->query("select count(*) from member where mess=0 "); 4 $res_total=$res->fetchColumn(); 这似乎是非常基础的流程问题呀.  
    2020-05-29 18:22:34
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载