数据库:
- xx_users (id, name, user_id, email, location)
- xx_questions (id, question, description, user_id)
原始代码:
$friends = $facebook->api('/me/friends');
$arr= $friends['data'];
$friend_ids_arr = array();
foreach($arr as $friend) {
$friend_ids_arr[] = $friend['id'];
}
$sql = "SELECT * FROM xx_questions WHERE user_id IN (" . implode(',', $friend_ids_arr) . ") OR user_id = '$user' ORDER BY time DESC";
新代码:
$friends = $facebook->api('/me/friends');
$arr= $friends['data'];
$friend_ids_arr = array();
foreach($arr as $friend) {
$friend_ids_arr[] = $friend['id'];
}
$sql = "SELECT *
FROM xx_questions q JOIN xx_users u ON
q.user_id = u.user_id
WHERE q.user_id IN (implode(',', $friend_ids_arr)) OR // STEP 1
q.user_id = '$user' OR // STEP 2
u.location = (SELECT location FROM xx_users WHERE user_id = $user) // STEP 3
ORDER BY q .time DESC";
$data = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_assoc($data)) {
echo $row[id];
}
如果出现以下三种情况中的任何一种,我正在尝试从 xx_questions(已由用户发布)中选择问题:
- 发帖人的 user_id 与当前用户的其中一位朋友的值匹配的值(即发帖人和用户是朋友)
- 发布者的 user_id 与用户的值匹配的那些值(即发布者是用户)
- 发布者的位置与当前用户的位置匹配的那些值(即发布者和用户当前在同一城市)
我最初已经完成了第 1 步和第 2 步,但是当我添加第 3 步时,会发生两件事:
- 第 1 步停止工作(即只返回来自当前用户和同一城市的人的帖子)
- while 循环中的
$row[id]
回显是 xx_users,而不是 xx_questions。我试过$row[q.id]
但无济于事。
知道出了什么问题吗?