0

我知道 Quote 和 QuoteInto。两者都不能帮助我解决以下问题。我需要清理以下 SQL 的输入:

select * from log where message like '%bla%'

QuoteInto 和 Quote 将添加不适用于 %(通配符)的引号。如何清理此输入,以便最终得到如上所述的“安全”SQL 语句?

4

1 回答 1

3

将字符直接附加%到您的变量中,并引用整个值。
看起来像这样:

 $value = 'bla';
 $db->quoteInto("SELECT * FROM log WHERE message LIKE ?", "%{$value}%");

与此相比,这会给您带来您所描述的不良结果:

 $value = 'bla';
 $db->quoteInto("SELECT * FROM log WHERE message LIKE '%?%'", $value);
于 2013-06-26T05:56:54.400 回答