1

我的查询有问题。我最近切换到 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'

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

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

4

3 回答 3

4

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

于 2013-10-08T08:21:52.087 回答
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
于 2013-10-08T07:48:58.463 回答
-1

恕我直言!我在 PDO 上看到了类似的问题......而且......我认为它更有可能用纯 SQL 来做所有事情,但是用 PDO 很好。

于 2013-10-08T07:50:16.530 回答