在非对象上调用成员函数rowCount()

时间:2013-10-08 07:42:23

标签: php mysql sql pdo

我的查询有问题。我最近切换到PDO,这对我来说是一种新的东西。现在我需要在我的查询中使用JOIN来从另一个表中获取数据而不进行两次执行。

问题是,我收到此错误:

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

我不明白问题是什么。这就是我的代码的样子:

  $friends_string = "SELECT * FROM `friends` as F, `users` as U WHERE `F.userID` = '$sess_user' AND `F.request` = '0' AND `F.friendID` = 'U.id'";
  $friends = $db->query($friends_string);
  if ($friends->rowCount() > 0) {

while($row = $friends->fetch(PDO::FETCH_ASSOC)) {
    echo "<br /><a href='profile.php?id={$row["id"]}'>{$row["friendID"]}</a>";
  }

} else {
    echo "no Friends";
}

或者简而言之,只是查询:

SELECT * FROM `friends` as F, `users` as U WHERE `F.userID` = '$sess_user' AND `F.request` = '0' AND `F.friendID` = 'U.id'

我想要的是,从朋友那里获取所有行,其中userID是会话,请求是0.但是我想获得用户中的朋友的ID,以便我可以链接到他们的个人资料。请注意$row["id"]

我感谢任何反馈,不必回答我的问题,如果您发现任何问题请注释。谢谢!

3 个答案:

答案 0 :(得分:4)

不要在`table.field`周围放回蜱...你必须把它们放在`table``field`

周围

答案 1 :(得分:0)

使用以下内容更改您的查询:

$query = "SELECT * FROM `friends` as F INNER JOIN `users` as U ON `F.friendID` = `U.id` WHERE `F.userID` = '{$sess_user}' AND `F.request` = '0'";

并将此添加到您的连接中,它会显示错误:

 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Set Errorhandling to Exception

答案 2 :(得分:-1)

IMHO! 我用PDO看到了类似的问题...... 和... 我认为使用纯SQL更有可能做到这一切,但是好了,然后再用PDO。