我有一个领域的文档表id,sender_id,receiver_id并receiver_id包含像字符串值 U12,U13,U14,现在我当前登录的用户,我想在其中找到的所有记录receiver_id包含了我user_id的手段我user_id就是U13。现在如何编写查询以获取记录。
id
sender_id
receiver_id
user_id
U13
我的查询是:
$selDoc="SELECT * FROM documents WHERE sender_id='U".$_SESSION['userId']."' OR "U".$_SESSION['userId']." IN (receiver_id) ORDER BY id DESC";
但我在“ where子句”中收到错误未知列“ U13”
您的字符串连接混乱了,应该是:( 进一步简化了 )
$selDoc="SELECT * FROM documents WHERE 'U".$_SESSION['userId']."' IN (senderID,receiver_id) ORDER BY id DESC";
当上面的语句被解析后,它将看起来像这样:
SELECT * FROM documents WHERE 'UXX' IN (senderID,receiver_id) // where XX is the userID ORDER BY id DESC
作为一个旁注,查询是脆弱的SQL Injection,如果值( 小号 变量)从外面走了进来。请查看下面的文章,以了解如何防止这种情况的发生。通过使用,PreparedStatements您可以摆脱在值周围使用单引号的麻烦。
SQL Injection
PreparedStatements