# Folour (08.05.2015 / 19:55)
Скобку пропустил, епт. Ты так говоришь, будто я должен был еще все тестами покрыть
И зачем каждое имя отдельным запросом?
А можно одним закинуть кучу имён? Не знал...
Macabre, почти. Добавил в
свой код trim(). Как выше написали.
$sql = "INSERT INTO cat_tag (user,time,text) VALUES\n";
$names = array_map(function($name) use ($user_id, $realtime) {
return "($user_id, $realtime, '".trim($name)."')";
}, explode(',', preg_replace('~[^a-zа-я\ \-]~isu', '', $msg)));
mysql_query($sql.implode(",\n", $names));
# ValekS (08.05.2015 / 19:56)
А можно одним закинуть кучу имён? Не знал...
так:
INSERT INTO tbl (id, name) VALUES (1, 'вася'), (2, 'петя'), (3, 'витя');
ЗЫ писал без проверки на работоспособность
Можно еще короче, и без промежуточных переменных, но это быдлокод уже гг
mysql_query("INSERT INTO cat_tag (user,time,text) VALUES\n".implode(",\n", array_map(function($name) use ($user_id, $realtime) {
return "($user_id, $realtime, '".trim($name)."')";
}, explode(',', preg_replace('~[^a-zа-я\ \-]~isu', '', $msg)))));
# ValekS (08.05.2015 / 19:56)
А можно одним закинуть кучу имён? Не знал...
Можно
INSERT INTO table (field, field2, field3) VALUES
(1, 2, 3),
(4, 5, 6),
(7, 8, 9)
(field, field2, field3) - задает порядок полей, VALUES указывает на начало перечисления записываемых значений, (1, 2, 3) - записывает значения по указанному порядку.
Folour, 100500 скобок... Ох у тебя и код. Проще можно же сделать...
# Folour (08.05.2015 / 20:13)
Можно
INSERT INTO table (field, field2, field3)
VALUES(1, 2, 3),
VALUES(4, 5, 6),
VALUES(7, 8, 9)
(field, field2, field3) - задает порядок полей, VALUES(1, 2, 3) - записывает значе
Вот так вот не работает как раз. Я гуглил перед тем как
написал, чёт ничего там не нашел толкового. Пробовал вот такие комбинации - нифига.
Вариант
вот этот работает) Буду теперь знать.
Всем спасибо, сделал так
$string = explode(',', $msg);
foreach($string as $msg) {
// Вставляем сообщение в базу
mysql_query("INSERT INTO `cat_tag` SET
`user` = '$user_id',
`time` = '$realtime',
`refid` = '$id',
`text` = '" . mysql_real_escape_string(trim($msg)) . "'
");
}
Macabre, конечно одним запросом закинуть все имена реально лучше, но можно и так. Если будешь 2-3 имени добавлять всё норм будет. Проблемы могут быть когда пару сотен имён добавляться будут.