我正在我的应用程序中实现搜索功能,我希望它是“智能”的。搜索成为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 '%?%' "


应该可以解决您的问题。

10-08 14:28