0

データベース:

  • 表#1:xx_users(id、name、user_id、location、network)
  • 表#2:xx_questions(id、user_id、time)

コード:

$friends = $facebook->api('/me/friends');
$arr = $friends['data'];
$friend_ids_arr = array();
foreach($arr as $friend) {
    $friend_ids_arr[] = $friend['id'];
}

$sql = "SELECT q.*, u.location, u.network
            FROM xx_questions q 
            JOIN xx_users u 
            ON q.user_id = u.user_id
            AND (q.user_id = $user) OR
            q.user_id IN (".implode(',', $friend_ids_arr).") OR
            u.location = (SELECT location FROM xx_users WHERE user_id = $user) OR
            u.network = (SELECT network FROM xx_users WHERE user_id = $user)
            ORDER BY q.time DESC";

$data = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($data)) {

if ($row['anon'] == 1) {
    $asker = "<span style='color: #333;'>Anonymous</span>";
}

else {
    $asker_name = json_decode(file_get_contents("http://graph.facebook.com/".$row['user_id']))->name;
    $asker = "<a href='user.php?id=".$row['user_id']."'><b>".$asker_name."</b></a>";
}

echo "<div class='question'>";
echo "<a href='q.php?id=".$row[id]."' class='left'>".$row['question']."</a><span style='color: #666'>&nbsp;";

$sql2 = "SELECT * FROM xx_answers WHERE question_id = '".$row[id]."'";
$result = mysql_query($sql2);
$xxx = mysql_num_rows($result);
echo "($xxx)";

echo "</span>";
echo "<div class='right'><span style='color: #999'>";

$to_time = strtotime("now");
$from_time = strtotime(".$row[time].");
$since = $to_time-$from_time;

time_since($since);

echo " by <a href='user.php?id=".$row['user_id']."'><b>".$asker."</b></a></span></div>";
echo "<div style='clear:both;'></div>";
echo "</div>";
}

私はこのコードを使用して、データベースから3種類の質問をエコーし​​ています。

  1. ユーザーがポスターを持っているFacebookの友達である場合
  2. ユーザーがポスターと同じ場所にいる場所
  3. ユーザーがポスターとネットワークを共有する場所

すべての値が2回エコーされることを除いて、これはすべて正常に機能します。奇妙なことに、上記の3つのうちの1つだけをエコーすると、意図したとおりに値が1回だけエコーされます。なぜこれが起こっているのか考えていますか?

4

0 に答える 0