Запись в бд с новой строки

Тема закрыта
572
.
Ей 25
# Folour (08.05.2015 / 19:55)
Скобку пропустил, епт. Ты так говоришь, будто я должен был еще все тестами покрыть
И зачем каждое имя отдельным запросом?
А можно одним закинуть кучу имён? Не знал...
.
ValekS
Ей 25
Macabre, почти. Добавил в свой код trim(). Как выше написали.
.
Folour
Think different
$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));
.
The Frontend-Warrior
# ValekS (08.05.2015 / 19:56)
А можно одним закинуть кучу имён? Не знал...
так:

INSERT INTO tbl (id, name) VALUES (1, 'вася'), (2, 'петя'), (3, 'витя');

ЗЫ писал без проверки на работоспособность
.
Folour
Think different
Можно еще короче, и без промежуточных переменных, но это быдлокод уже гг
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)))));
.
Folour
Think different
# 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) - записывает значения по указанному порядку.
.
Ей 25
Folour, 100500 скобок... Ох у тебя и код. Проще можно же сделать...
.
ValekS
Ей 25
# 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) - записывает значе
Вот так вот не работает как раз. Я гуглил перед тем как написал, чёт ничего там не нашел толкового. Пробовал вот такие комбинации - нифига.
Вариант вот этот работает) Буду теперь знать.
.
Wap Master
Всем спасибо, сделал так
$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)) . "' 
");

}
.
Ей 25
Macabre, конечно одним запросом закинуть все имена реально лучше, но можно и так. Если будешь 2-3 имени добавлять всё норм будет. Проблемы могут быть когда пару сотен имён добавляться будут.
Всего: 36