【发布时间】:2017-02-26 14:35:25
【问题描述】:
假设我想像这样运行查询:
$q = "SELECT * FROM items WHERE name LIKE $1";
$r = pg_query_params($dbconn, $q, array("%" . $ss . "%"));
如果用户为$ss 提供了带有% 或_ 的字符串,则可能会出现问题。如何告诉引擎不要将$ss 中的% 和_ 视为特殊符号?
现在我的方法是
$q = "SELECT * FROM items WHERE name LIKE $1 ESCAPE '\'";
$r = pg_query_params($dbconn,
$q,
array("%" . str_replace("%", "\%", str_replace("_", "\_", $ss)) . "%"));
但是如果转义字符 (\) 是字符串中的最后一个字符,那么附加的 % 也会被转义。
【问题讨论】:
标签: php postgresql escaping sql-like