| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Базы Данных > Добавление в таблицу сразу не сколько строк. |
| Автор: Igor_CH 5.6.2006, 16:59 | ||
Подскажите как добавить в таблицу сразу несколько строк, т.е.: делаю 1. соединяюсь с базой 2. заполняю ячейки (их может быть сколько угодно)
3. как записать каждую ячейку в свою строку в таблице. Таблица из двух ячеек ID и FOTO. |
| Автор: skyboy 5.6.2006, 17:08 | ||
Где <photoX> - очередное фото. |
| Автор: Igor_CH 5.6.2006, 17:20 |
| Так записывается в одну строку в разные ячейки, а мне нужно чтоб запись была: ID PHOTO 1 1.jpg 2 me.jpg 3 sdfsg.jpg ....... и опять таки не известно сколько будет фото. |
| Автор: skyboy 5.6.2006, 17:28 | ||
одну строку в разные ячейки записывают так:
Обрати внимание на количество перечисленных полей после "INTO Table" и количество скобок после "VALUES" А то, что я предложил пост назад, как раз и записывает несколько строк. Добавлено @ 17:29 когда ты будешь формировать запрос, ты ведь будешь уже точно знать количество фотографий, потому тебе ничто не помешает формировать запрос в цикле. |
| Автор: Igor_CH 5.6.2006, 17:41 | ||
Вот так я делаю:
Ошибка: Operand should contain 1 column(s) INSERT INTO photo (foto_name, text) VALUES ( ('1.jpg','text1'), ('2.jpg','text2') ); |
| Автор: ASteel 5.6.2006, 17:50 | ||
А я бы сделал так:
Обрати внимание на скобки! |
| Автор: skyboy 5.6.2006, 17:51 | ||
| Igor_CH, а зачем после "VALUES" ты ещё одними скобками оборачиваешь вводимые данные? Попробуй так:
|
| Автор: Igor_CH 5.6.2006, 18:03 |
| Большое спасибо!!! Все работает |
| Автор: Igor_CH 5.6.2006, 18:36 |
| Продолжение начатого, чтоб не начинать новую тему. Подскажите как правильно сделать. Есть форма, разобьем ее на две части: 1 часть ----------------- Название <input type=text name=nazvanie> Описание <input type=text name=opisanie> Данные записываются в таблицу KAT Таблица “KAT” для этой части выглядит так: ID | NAZVANIE | OPISANIE | DATA 2 часть ---------------- Фото 1 Описание для фото 1 Фото 2 Описание для фото 2 …………………………………. Фото N Описание для фото N Данные записываются в таблицу PHOTO Таблица “PHOTO” для этой части выглядит так: ID | FOTO | TEXT | ID_KAT (id с таблицы KAT) Так вот как лучше получить (записать) ID_KAT? Получать последний auto_increment с таблицы PHOTO или записывать ID_KAT как дату с таблицы KAT. |
| Автор: skyboy 5.6.2006, 19:11 |
| Не совсем понятно, что ты хочешь сделать. Хорошо, хоть структуру описал. А вообще-то, одна тема - один вопрос |
| Автор: skyboy 5.6.2006, 22:44 |
| Serkys, может, мне показалось, но мне функия last_insert_id() возвращает автоинкремент вставленный именно мной(как сессией подключения). Может, показалось? |
| Автор: Serkys 5.6.2006, 23:06 |
| skyboy, без понятия. Я в дебри мускула не лазил. |
| Автор: skyboy 5.6.2006, 23:36 |
| Serkys, я тоже не лазил. Я испытания проводил. Только там лажа с этой функцией. От версии к версии она то работает стабильно, то вовсе не работает. По крайней мере, в моих руках... Потому - пользоваться ею нельзя. |
| Автор: ASteel 6.6.2006, 08:26 | ||||
Лучше всего, не использовать autoincrement а делать что-то типа:
И потом этот key использовать и в 1-ом запросе и во втором. А last_insert_id() действительно крайне нестабильна. |
| Автор: Igor_CH 6.6.2006, 08:50 | ||
| [QUOTE=Serkys,5.6.2006, 22:25] Согласен, поменял названия. Структура должна быть такой: я вношу данные: Общее название - в таблицу PHOTO_KAT Общее описание - в таблицу PHOTO_KAT Фото 1 - описание к фото 1 - в таблицу PHOTO Фото 2 - описание к фото 2 - в таблицу PHOTO ................... Фото N - описание к фото N - в таблицу PHOTO а потом уже буду делать выборку из двух таблиц. вот такой код получился при записи данных:
Т.е. загружаю в первую таблицу "PHOTO_KAT" значения NAME, TEXT, DATA Получаю auto_increment этой таблицы, и записываю его уже в следующую таблицу как id_foto. Правильно ли сделал? Или все таки auto_increment не использовать? |
| Автор: skyboy 6.6.2006, 10:23 |
| Igor_CH, тут - как в анеке: работает? тогда, ради Бога, ничего не трогай в запросе, то работает, то возвращает "0". Я к тому, что не всё так плохо. |
| Автор: -=Ustas=- 7.6.2006, 08:19 | ||
В твоем случае:
Ни разу не замечал сбоев. |
| Автор: Igor_CH 16.6.2006, 11:58 |
| У меня тут вопрорс возник, а если будет сбой на сервере, например: в первую таблицу данные занеслись сбой во вторую ничего не попало Как тут быть? |
| Автор: -=Ustas=- 16.6.2006, 12:20 | ||
Тогда уже mysql_insert_id не прокатит, так он работает только на текущей сессии. Вариант только так:
|
| Автор: Igor_CH 16.6.2006, 12:40 |
| так, а как от сбоя предохраниться? Если произошел сбой - то запись не произошла. |
| Автор: vasac 16.6.2006, 13:05 |
| Igor_CH, транзакциями предохраняться |