|
|
|
|
foreach($keytags as $partag)
{
$sqltag[ ] = "(NULL,'$partag')";
}
$query = "INSERT INTO $tbl_tags VALUES ".implode(",",$sqltag);
|
Вставили в таблицу несколько значений ID и $partag, подскажите как вывести все ID данного запроса
в массив?
Возвращает ID, сгенерированный при последнем INSERT-запросе. Но, нужны все ID последнего запроса. | |
|
|
|
|
|
|
|
для: xray
(23.08.2008 в 08:53)
| | при вставке запоминать/записывать в массив с помощью mysql_insert_id() | |
|
|
|
|
|
|
|
для: xray
(23.08.2008 в 08:53)
| | >Возвращает ID, сгенерированный при последнем INSERT-запросе.
Возвращает первый ID, сгенерированный при последнем INSERT-запросе.
Оставшиеся можно получить, добавив нужное количество единичек. | |
|
|
|
|
|
|
|
для: Trianon
(23.08.2008 в 09:03)
| | Оставшиеся можно получить, добавив нужное количество единичек.
А если имели место удаления?
Вобщем я так понимаю нужна транзакция? | |
|
|
|
|
|
|
|
для: Valick
(23.08.2008 в 09:25)
| | То что?
Честно, не понял.
UPD. по-моему, понял. Первичные ключи повторно не используются. | |
|
|
|
|
|
|
|
для: Trianon
(23.08.2008 в 09:33)
| | Это я немного непонял. Вы говорили о многострочном инсёрте, а я сразу непонял. В этом случае транзакция ненужна, верно?) | |
|
|
|
|
|
|
|
для: Valick
(23.08.2008 в 10:02)
| | на один оператор? не нгужна. | |
|
|
|
|
|
|
|
для: Trianon
(23.08.2008 в 09:03)
| | Идея понятна.
Не понятно действие - "добавив нужное количество единичек." | |
|
|
|
|
|
|
|
для: xray
(23.08.2008 в 09:34)
| | Если mysql_insert_id() на 5-строчный INSERT вернул, к примеру, 17, то соответствующие id будут равны 17,18,19,20,21 | |
|
|
|
|
|
|
|
для: Trianon
(23.08.2008 в 10:12)
| | Прошу помочь мне направить мои мысли в правильном направлении.
Немогу вычислить многострочный INSERT для mysql_insert_id()
// Извлекаем текущую максимальную позицию
$query = "SELECT MAX(id) FROM $tbl_tags";
$count = mysql_query($query);
if(!$count) exit("Ошибка при извлечении максимального значения");
$count = mysql_result($count, 0);
// Делаем многострочный INSERT (добавляем список тегов)
foreach($keytags as $partag)
{
$sqltag[] = "(NULL,'$partag')";
}
$query = "INSERT INTO $tbl_tags
VALUES ".implode(",",$sqltag);
if(!mysql_query($query)) exit(""Ошибка при добавлении tags");
// Извлекаем значение первичного ключа, только что вставленных tags (тегов)
$id = mysql_insert_id();
// Пытаемся получить все ID только что выполненного INSERT
for($i = $count; $i<=$id; $i++)
{
echo '<pre>'; print_r($i); echo '</pre>'; // Выводит максимум два ID при любом кол-ве INSERT
}
|
| |
|
|
|
|
|
|
|
для: xray
(23.08.2008 в 15:32)
| |
<?
// Извлекаем текущую максимальную позицию
// """""" этого делать нельзя.
// Делаем многострочный INSERT (добавляем список тегов)
foreach($keytags as $partag)
{
$sqltag[] = "(NULL,'$partag')";
}
$query = "INSERT INTO $tbl_tags
VALUES ".implode(",",$sqltag);
if(!mysql_query($query)) exit("Ошибка при добавлении tags");
$count = mysql_affected_rows();
// Извлекаем значение первичного ключа, только что вставленных tags (тегов)
$id = mysql_insert_id();
// Пытаемся получить все ID только что выполненного INSERT
for($i = 0; $i < $count; $i++)
echo ($id+$i) . "<br>";
|
| |
|
|
|
|
|
|
|
для: Trianon
(23.08.2008 в 15:39)
| | Respect!!!
У меня вопрос относительно:
// Извлекаем текущую максимальную позицию
// """""" этого делать нельзя.
почему?? | |
|
|
|
|
|
|
|
для: xray
(23.08.2008 в 16:27)
| | Потому что это число ни какой информации по сути своей не несет.
В тот же момент может идти параллельный запрос но добавление строк - и что тогда Вам оно даст? | |
|
|
|