我正在尝试在用 C 编写的 CGI 脚本中构建 SQL 查询。用户在查询页面时传递了某种参数,脚本需要查询:
SELECT `name`, `address`, `phone_number` FROM `restaurants` WHERE `name` LIKE '%{parameter}%'
由于转义和安全问题,我显然不能将 {parameter} 替换为 %s 和 sprintf 为字符串。
因此,我构建了一个准备好的语句:
const char * statement = "SELECT `name`, `address`, `phone_number` FROM `restaurants` WHERE `name` LIKE '%?%'";
最终发生的是我的问号没有被解析并且绑定失败。当我将语句的结尾更改为“ name
LIKE ?”时,这很有效,除了我丢失了包含该术语而不是等于它的结果,这很糟糕。
是否有可能解决这个问题,并且仍然可以正确、安全地在字符串中使用 LIKE 和参数构造 SQL 语句?
谢谢!