我不明白为什么SQL不喜欢我的查询:
@unreadmessages = Message.find(:all, :conditions => ["receiver_id = ? AND receiver_archived = ? AND read = ?", self.current_user, "No", "No"])还有一种不同的编写方式,但我希望保持风格一致(我想这一种方式避免了SQL注入)。
感谢您的投入!
发布于 2009-08-21 21:40:29
"Read“是MySQL中的reserved word。我建议将该列重命名。或者,您也可以在每次引用它时将其放入反字符中。
@unreadmessages = Message.find(:all, :conditions => ["receiver_id = ? AND receiver_archived = ? AND `read` = ?", self.current_user, "No", "No"])不过,我建议您重命名。
发布于 2009-08-21 21:44:41
我假设您并没有真正在数据库中存储单词"No“来跟踪true/false。如果您使用的是布尔值或位,请尝试以下方法。
@unreadmessages = Message.find(:all, :conditions => ["receiver_id = ? AND receiver_archived = ? AND read = ?", self.current_user.id, false, false])编辑:看看ryanb是怎么说"read“的,如果这是一个新的应用程序,并且您可以控制数据库模式的样子,请考虑我对您的列所说的内容。
https://stackoverflow.com/questions/1314280
复制相似问题