我正在尝试理解用于实现新功能和选项的脚本。 为了搜索sql表,他们使用了以下语法
$sqlquery = "SELECT DISTINCT \"Name\", \"FileName\", \"Status\", lower(\"Name\") FROM \"" . $SearchedTable . "\" WHERE ";
$sqlquery=$sqlquery." (\"Name\" ~* '".$text[$i]."' OR \"DNA\" ~* '".$text[$i]."')";
答案 0 :(得分:7)
一般说明:您当前的查询使用字符串连接,因此易于进行SQL注入。在PHP方面,最好的解决方法是使用准备好的语句。
也就是说,您的SQL语法似乎是Postgres,而不是MySQL。这是粗略的查询:
SELECT DISTINCT Name, FileName, Status, lower(Name)
FROM yourTable
WHERE Name ~* ? OR DNA ~* ?;
Postgres中的~*
运算符不区分大小写的正则表达式匹配。因此,例如,要匹配以Name
开头的任何mi
,您可以使用:
WHERE Name ~* '^mi'
因此,应该绑定到两个占位符的是正则表达式。