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

时间:2013-04-20 06:02:22

标签: php mysql sql mysql-error-1054

我的文档表包含字段idsender_idreceiver_idreceiver_id包含字符串值,如 U12,U13,U14 现在我目前已登录用户,我想查找receiver_id包含user_id}的所有记录,表示我的user_idU13。现在如何编写查询以获取记录。

我的查询是:

$selDoc="SELECT * FROM documents WHERE sender_id='U".$_SESSION['userId']."' OR  "U".$_SESSION['userId']." IN (receiver_id) ORDER BY id DESC";

但我在'where子句'

中收到错误未知列'U13'

2 个答案:

答案 0 :(得分:4)

你的字符串连接搞砸了,应该是:(进一步简化

$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

作为旁注,如果变量的值( s )来自外部,则查询易受SQL Injection攻击。请查看下面的文章,了解如何防止它。通过使用PreparedStatements,您可以摆脱在值周围使用单引号。

答案 1 :(得分:1)

你在那里错过了一句话。此外,您应该考虑在查询中使用绑定变量(分配值以查找变量,然后在查询中使用占位符)以避免SQL注入的问题(如果您不知道那是什么,请查找它,这是非常重要的要知道!)