Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Добавление двух id в связующую таблицу
$sql2="INSERT INTO author_book (id_author,FIO,alias) VALUES".implode(',',$a_f_author);
echo wtf($sql2);
//Результат без запроса,просто вывод на экран:
INSERT INTO author_book (id_author,FIO,alias) VALUES(NULL,"Ибрагимов","Ибра"),(NULL,"Файзуллин","Фейз")
Книга - Связующая таблица - Автор.
Добавил автора к таблица Автор
Добавил книгу к таблице Книга.
Но не могу понять как добавить id двух авторов к Связующей таблице?..
Мелкий
Отправлено: 06 Мая, 2014 - 19:05:20
Активный участник
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Для этого надо узнать id добавленных авторов.
insert_id отдаст только последний.
Следовательно надо или:
0) делать insert в цикле и запоминать id. Поскольку запись операция редкая - запросы в цикле здесь оправданы.
1) или искать только что добавленные строки. Удобно, если есть уникальный индекс. Тогда можно сразу insert ... select'ом переписать в таблицу связей.
Если речь неожиданно не о mysql, а о postgres - то insert ... returning
----- PostgreSQL DBA
Fsingle
Отправлено: 06 Мая, 2014 - 22:05:39
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Мелкий пишет:
Для этого надо узнать id добавленных авторов.
insert_id отдаст только последний.
Следовательно надо или:
0) делать insert в цикле и запоминать id. Поскольку запись операция редкая - запросы в цикле здесь оправданы.
1) или искать только что добавленные строки. Удобно, если есть уникальный индекс. Тогда можно сразу insert ... select'ом переписать в таблицу связей.
Если речь неожиданно не о mysql, а о postgres - то insert ... returning
пытался сделать второй вариант,все равно не вышло...
INSERTINTO book_and_author (id_book,id_author)SELECT $id_book, id_author FROM author_book WHERE FIO IN('автор1','автор два');
Но лучше первый вариант - его проще сопровождать.
----- PostgreSQL DBA
Fsingle
Отправлено: 07 Мая, 2014 - 19:45:57
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Мелкий пишет:
Для этого надо узнать id добавленных авторов.
insert_id отдаст только последний.
Следовательно надо или:
0) делать insert в цикле и запоминать id. Поскольку запись операция редкая - запросы в цикле здесь оправданы.
1) или искать только что добавленные строки. Удобно, если есть уникальный индекс. Тогда можно сразу insert ... select'ом переписать в таблицу связей.
Если речь неожиданно не о mysql, а о postgres - то insert ... returning
Извиняюсь,но не смог 0 вариант сделать..Может подскажете более детально?..
ПТО
Отправлено: 19 Мая, 2014 - 13:15:28
Посетитель
Покинул форум
Сообщений всего: 395
Дата рег-ции: Янв. 2012
Помог: 3 раз(а)
Fsingle пишет:
Мелкий пишет:
Для этого надо узнать id добавленных авторов.
insert_id отдаст только последний.
Следовательно надо или:
0) делать insert в цикле и запоминать id. Поскольку запись операция редкая - запросы в цикле здесь оправданы.
1) или искать только что добавленные строки. Удобно, если есть уникальный индекс. Тогда можно сразу insert ... select'ом переписать в таблицу связей.
Если речь неожиданно не о mysql, а о postgres - то insert ... returning
Извиняюсь,но не смог 0 вариант сделать..Может подскажете более детально?..
СУБД Postgres имеет навороты практически наравне с Oracle, но в отличии от него является бесплатной. Например, можно сделать вставку[удаление, изменение] и вернуть получившийся результат:
Insert into mytable (field1, filed2) VALUES ('value1','value2') Returning *;
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.