0

結合を使用して、データベースから必要なデータのみをクエリしたいと思います。それでも、クエリを機能させるのに問題があります。

これが私のコードです。見てください、

<?php 

$user_id= $_COOKIE['user_id'];

$dbc= mysqli_connect('localhost', 'root', '', 'beta');
$query=" SELECT * FROM posts LEFT JOIN relationships ON (posts.user_id=    
relationship.user_2 AND relationships.user_1 = $user_id AND relationship.status = 4 OR         
3 OR 1)";
$result= mysqli_query($dbc, $query);

echo mysqli_num_rows($result);

?>

この時点でクエリが機能するかどうかを確認するために、行が返されるかどうかを確認するだけです。しかし、それは機能しません。何が間違っているのでしょうか?

4

2 に答える 2

1

OR句内のWHERE条件が正しい構文ではありません。次のようなものを試してください:

SELECT  * 
FROM    posts a 
            LEFT JOIN relationships b
                ON a.user_id = b.user_2 
WHERE   b.user_1 = $user_id AND 
        b.status IN (1,3,4)

PDOまたはMYSQLi拡張機能を使用することをお勧めします。

PDOでは、次のようになります。

<?php
$stmt = $dbh->prepare("SELECT   * 
                      FROM  posts a 
                           LEFT JOIN relationships b
                                ON a.user_id = b.user_2 
                     WHERE  b.user_1 = ? AND 
                            b.status IN (1,3,4)");

$stmt->bindParam(1, $user_id);
$stmt->execute();

?>

入力を常にフィルタリングすることを忘れないでください。特に、データベースのクエリに使用されます。

于 2012-08-12T03:35:46.157 に答える
0

クエリに「relationships」と「relationship」を混ぜていますが、テーブルの名前に固執しているのではないでしょうか。

于 2012-08-12T03:34:56.010 に答える