PHP Implode But Wrap Каждый элемент в цитатах

Предположим, у меня есть массив:

$elements = array('foo', 'bar', 'tar', 'dar'); 

Затем я хочу создать запрос DELETE IN SQL:

  $SQL = "DELETE FROM elements WHERE id IN ('" . implode(',', $elements) . "')"; 

Проблема в том, что идентификаторы в массиве элементов не котируются отдельно. IE выглядит так:

  $SQL = "DELETE FROM elements WHERE id IN ('foo,bar,tar,dar'); 

Какой лучший, самый изящный способ исправить это?

Related of "PHP Implode But Wrap Каждый элемент в цитатах"

Добавьте кавычки в вызов implode : (Я предполагаю, что вы имели в виду implode )

 $SQL = 'DELETE FROM elements WHERE id IN ("' . implode('", "', $elements) . '")'; 

Это дает:

 DELETE FROM elements WHERE id IN ("foo", "bar", "tar", "dar") 

Лучший способ предотвратить внедрение SQL – это убедиться, что ваши элементы правильно экранированы.

Легкая вещь для этого должна работать (но я ее не тестировал) – использовать либо array_map либо array_walk , и избегать каждого параметра, например:

 $elements = array(); $elements = array_map( 'mysql_real_escape_string', $elements);