Как вы выводите содержимое массива в виде строки через запятую? - PullRequest
1 голос
/ 18 ноября 2008

Я хотел бы преобразовать массив, если идентификаторы, в строку значений, разделенных запятыми, для использования в запросе MySQL UPDATE. Как бы я это сделал?

Ответы [ 5 ]

13 голосов
/ 18 ноября 2008

Не забудьте экранировать значения:

'"' . implode('","', array_map('mysql_real_escape_string', $data)) . '"'
13 голосов
/ 18 ноября 2008
implode(',', $array);
2 голосов
/ 18 ноября 2008

Обязательно передайте результаты через mysql_real_escape_string () перед выполнением запроса. Это должно предотвратить внедрение sql, если вы используете implode (), как предлагают другие.

И, как упоминает nickf, всегда проверяйте, чтобы массив не был пустым или нулевым, и обрабатывайте эти случаи. Поскольку вы имеете дело только с целыми числами, не мешало бы поставить некоторые проверки типов в ваших назначениях, иначе вы получите ошибки sql, если строка каким-то образом проскальзывает.

1 голос
/ 18 ноября 2008

Часто в ситуациях такого типа люди строят массив из другой таблицы для использования во втором запросе. Если это так, вы можете использовать подзапрос, чтобы выполнить это.

Например. ОБНОВЛЕНИЕ Таблица SET Столбец = Значение WHERE ID IN (ВЫБРАТЬ ID ИЗ Table2 WHERE УСЛОВИЯ)

0 голосов
/ 08 декабря 2008

Это, вероятно, лучше, если все идентификаторы должны быть числовыми. Убедитесь, что оно состоит как минимум из одного целого числа с

$ids = array_filter($ids, 'is_int');
if (!$ids) {
    //no valid ids returned.
    die('or something');
}
$sql .= '(' . implode(',', $ids) . ')';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...