PHP Implode,但包装报价中的每个元素
假设我有一个数组:
$elements = array('foo', 'bar', 'tar', 'dar');
然后我想build立一个DELETE IN
SQL查询:
$SQL = "DELETE FROM elements WHERE id IN ('" . implode(',', $elements) . "')";
问题是元素数组中的ids没有单独引用。 IE的查询看起来像:
$SQL = "DELETE FROM elements WHERE id IN ('foo,bar,tar,dar');
什么是最好的,最elegants方法来解决这个问题?
添加引号到implode
调用:(我假设你的意思是内implode
)
$SQL = 'DELETE FROM elements WHERE id IN ("' . implode('", "', $elements) . '")';
这产生:
DELETE FROM elements WHERE id IN ("foo", "bar", "tar", "dar")
防止SQL注入的最好方法是确保元素正确地转义。
做一个简单的事情应该可行(但我没有testing过)是使用array_map
或array_walk
,并转义每个参数,如下所示:
$elements = array(); $elements = array_map( 'mysql_real_escape_string', $elements);