【问题标题】:Call to a member function fetch_object() on resource调用资源上的成员函数 fetch_object()
【发布时间】:2015-05-10 21:03:38
【问题描述】:

我编写了这个 PHP 文件,其中包含 SQL 以将所有帖子收集到一个表中。

$selectpost = mysql_query("
SELECT 
posts.id,
COUNT(post_likes.id) AS likes

FROM posts

LEFT JOIN post_likes
ON posts.id = post_likes.post

GROUP BY posts.id

");

while($row = $selectpost->fetch_object()) {

$posts[] = $row;    
}

由于某种原因,我不断收到此错误:

在第 23 行的 posts.php 中调用资源的成员函数 fetch_object()

第 23 行是 while 循环:

while($row = $selectpost->fetch_object()) {

像这样连接到数据库:

$db = mysql_connect('localhost', 'account', 'password');

$dbs = mysql_select_db('site');

什么问题,我无法解决..

【问题讨论】:

  • 您正在混合不相互混合的 API。使用“一个”并且只有一个。如果是gin & tonic,很好。但不是为了这个。
  • 那么我该如何修复while循环呢?
  • 我不知道。我首先需要知道您使用哪个 API 连接到您的数据库。这就是数据库工作的根源。
  • 我已经编辑了问题给你看。
  • mysql_ + mysql_ = 成功 mysqli_ + mysqli_ = 成功。 PDO 与 PDO = 成功。在其中一个上放一把扳手,它就会失效。即:mysqli_ + mysql_ 或 PDO = 失败。

标签: php mysql database while-loop


【解决方案1】:

$selectpost->fetch_object() 是 mysqli 函数,所以 $selectpost 需要是 mysqli 结果。

对于 mysql_query() 使用非面向对象的 mysql_fetch_object()

基本上你 mysql_query() 没有返回一个 mysqli 对象,但你试图对它进行 mysqli 方法调用。

http://php.net/manual/en/function.mysql-fetch-object.php

【讨论】:

    【解决方案2】:

    您正在使用 mysql_ PHP 扩展,因此您必须使用

    while($row = mysql_fetch_object($selectpost)) {
    

    当然,你真的不应该使用 mysql_ 扩展,因为它已被弃用

    【讨论】:

    • 我用什么代替?
    • PDO 扩展或 MYSQLI_ 扩展都是您的选择。我仍然无法决定哪个更好。 打赌得到评论或 1000
    • “如果我使用 mysqli_,虽然我得到了很多错误 - fire_head” - 再次,this is the reason... @fire_head - Plus,@987654323 @ 要求将数据库连接传递给它们的函数。
    猜你喜欢
    • 2020-02-29
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 2021-09-04
    • 2016-07-22
    相关资源
    最近更新 更多