2011-11-12 16 views
0

これはエラーなく正常に実行され、ログインしているユーザーの友人からのコメントを返すことになっています。このコードはコメントを表示しません。私のデータベースには4つのフィールドがあります。 user1、user2、active、およびid。 User1は友人であることを要求し、user2はそれを受け入れるユーザーです。友好関係が保留中か「活動中」の場合はアクティブです。 IDは1から始まり、自動増分する友情IDです。ユーザーのIDは、Cookieを使用して取得されます。これは私が今までに持っているコードです:メッセージ投稿PHPとSQL

public function Updates($uid) 
{ 
    $host="localhost"; 
    $username="username"; 
    $password="password"; 
    $db_name="members"; 
    $tbl_name="friends"; 

    $user1=$_COOKIE["ID"]; 

    $link = mysql_connect("$host", "$username", "$password")or die("Cannot connect. Please contact us"); 
    mysql_select_db("$db_name")or die("Cannot select database. Please contact us"); 
    $sql="SELECT * FROM $tbl_name WHERE user1 =$user1"; 
    $result=mysql_query($sql, $link) or die ('Unable to run query:'.mysql_error()); 

    $query = mysql_query(" 
      SELECT 
      M.msg_id, 
      M.uid_fk, 
      M.message, 
      M.created, 
      U.Firstname, 
      U.Lastname 
      FROM messages M 
      JOIN users U ON U.UID = M.uid_fk 
      JOIN friends F ON M.uid_fk = F.user2 
      WHERE F.user1 = '$user1' 
      ORDER BY M.created desc 
     ") or die(mysql_error()); 
    while($row=mysql_fetch_array($query)) 
    $data[]=$row; 
    return $data; 
} 

これは何が起こっているのかを理解するのに十分だと思います。ヘルプは非常に感謝しています。

表の定義:

Database

答えて

1

この行:$結果であるため、

mysql_select_db("$db_name", $link) 

そして、これらの行は何もしない:

mysql_select_db("$db_name") 

があるべき決して使用しなかった:

$sql="SELECT * FROM $tbl_name WHERE user1 =$user1"; 
$result=mysql_query($sql, $link) or die ('Unable to run query:'.mysql_error()); 

最後に、U.UIDU.uidである必要があります。私はMySQLが大文字と小文字を区別していると確信しています

まだクエリに問題がある場合は、MySQLクエリブラウザで直接クエリを実行してください。これは、あなたのSQLをデバッグするのに役立ちます。

また、ユーザーIDをCookieから直接取得するように注意する必要があります。 Cookieをスプーフィングするのは難しくありません。誰かのアカウントに直接アクセスできるようになります。

+0

非常に参考になった! Cookieのアドバイスを強く考慮し、プロジェクトのこの部分を再設計します。再度、感謝します! – Sneitzke38

関連する問題