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的 inWHERE子句条件的语法不正确。尝试这样的事情:

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)

我建议你使用PDOMYSQLi扩展。

在 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

您在查询中混合了“关系”和“关系”,也许坚持表的名称是什么?

于 2012-08-12T03:34:56.010 回答