我正在我的应用程序中实现搜索功能,我希望它是“智能”的。搜索成为SQL-query
。
我想要以下功能:搜索“ litago”将显示“ litago 500ml”,litago 375ml,“ Small litago”,“ superlitago223”
那是'ANY_STRING_HERE'+'litago'+'ANY_STRING_HERE'
我想在SQL query
中这样做:
query = 'SELECT * FROM varer WHERE navn LIKE '%?%' '
?
是用户输入,litago
只是示例但是,这给出一个
syntax error
。有没有办法做到这一点?编辑:使用python 3.6.4,这是relevant code
从rogerbinns github:
有两种向查询提供数据的方式。真正糟糕的方法是编写字符串:
sql="insert into example values('%s', %d)" % ("string", 8390823904)
cursor.execute(sql)
如果字符串中有任何单引号,则语法无效。另外,这就是SQL注入攻击的发生方式。相反,您应该使用绑定:
sql="insert into example values(?, ?)"
cursor.execute(sql, ("string", 8390823904))
最佳答案
您不能在由单引号引起来的字符串中使用单引号而不将其转义,但是可以在双引号分隔的字符串中使用。
就像是
query = "SELECT * FROM varer WHERE navn LIKE '%?%' "
应该可以解决您的问题。