在这里,我在RoR应用程序中搜索Postgresql DB中的记录时遇到问题。 table :: address_books的名称,属性名称:: organization_name,federal_tax_id,city,zip,business_name。在搜索中,组织名称包含:: Claire's Inc作为记录。在搜索时,我们在搜索框中选择Claire's Inc时不会显示数据。因为“'”打破了字符串并且没有给出结果。所以我用过“?”在mysql中搜索时替换“'”并且它有效。但是我正在进行适当的转换以搜索这些单词。
Query :: SELECT * FROM "address_books"
WHERE ( address_books.organization_name = 'Claire?s Inc'
and address_books.federal_tax_id = '59-0940416'
and address_books.city = 'Hoffman Estates'
and address_books.zip = '60192' and address_books.business_name ='' )
ORDER BY address_books.organization_name , city LIMIT 100
请建议任何其他方式来成功搜索。
先谢谢
答案 0 :(得分:0)
您正在搞乱数据以处理查询语法问题。将一个正确转义的撇号放在撇号所在的位置。
一种方法是将其转义为'Claire''s Inc'
。另一种方法是使用一个库,它允许您传递参数并为您处理转义。另一种方法是将字符串输入为$$Claire's Inc$$
,尽管该语法允许其他可能不合适的内容。
答案 1 :(得分:0)
我认为你可以使用RoR参数替换,而不是RoR会为你逃避危险的字符串。类似的东西:
AddressBook.find(:all, :conditions => { "organization_name => ?", "Claire's Inc" })
或
AddressBook.find(:all, :conditions => { :organization_name => "Claire's Inc" })