一尘不染

如何检查数据库列中存在的字符串?

sql

我有一个领域的文档表idsender_idreceiver_idreceiver_id包含像字符串值 U12,U13,U14,现在我当前登录的用户,我想在其中找到的所有记录receiver_id包含了我user_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”


阅读 387

收藏
2021-03-08

共1个答案

一尘不染

您的字符串连接混乱了,应该是:( 进一步简化了

$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您可以摆脱在值周围使用单引号的麻烦。

2021-03-08