[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: запрос INSERT в цикле
freaky
Здравствуйте!
Никак не могу сообразить.
Файл - обработчик для добавления данных в таблицу.
Сначала я выбираю нужные данные из базы
if (isset($_POST['division'])) {$division = $_POST['division'];   }

$res = mysql_query ("SELECT * FROM number WHERE division='$division'");
$row = mysql_fetch_array ($res);

do {

printf ("%s <br>", $row['name']);

}
while ($row = mysql_fetch_array ($res));


Далее идёт сам запрос на добавление данных.
$result435 = mysql_query ("INSERT INTO table (pole1,pole2,pole3) VALUES ('$row[name]','$pole2','$pole3')");


Я так понимаю последний запрос нужно сделать в цикле, так как добавляется только одно-первое поле из первого запроса, а если их более одного, то остальные не добавляются. Подскажите как правильно сделать цикл!



Спустя 1 минута, 45 секунд (7.10.2010 - 08:12) linker написал(а):
Поповс
$res = mysql_query ("SELECT * FROM `number` WHERE `division` = '$division'");
$array_vals = array();
while ($row = mysql_fetch_assoc($res))
{
printf ("%s <br>", $row['name']);
$array_vals[] = "('" . $row['name'] . "','$pole2','$pole3')";
}
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES " . join(',', $array_vals));
Можно вообще так
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES (SELECT `name`, '$pole2', '$pole3' FROM `number` WHERE `division` = '$division')");

Спустя 38 минут, 48 секунд (7.10.2010 - 08:51) freaky написал(а):
так вообще не работает(((

Спустя 7 минут, 49 секунд (7.10.2010 - 08:59) linker написал(а):
Что, где, как, когда?

Спустя 1 минута, 56 секунд (7.10.2010 - 09:01) freaky написал(а):
два варианта предложенные вами не работают, ничего не добавляется, просто ничего не происходит, может есть другие варианты?!

Спустя 11 минут, 17 секунд (7.10.2010 - 09:12) sergeiss написал(а):
Во-первых, в первой базе может просто не быть данных, соответствующим указанным критериям. Ты проверял наличие данных?
А во-вторых, я в очередной раз не понимаю: зачем брать данные из одной таблицы и просто перекладывать их в другую таблицу??? Более бестолковое занятия для БД сложно придумать smile.gif

Спустя 6 минут, 24 секунды (7.10.2010 - 09:18) freaky написал(а):
Данные точно есть, для этого селект я и сделал вначале.
Зачем? Мне нужен перенос конкретных данных по заданному критерию введёному в поле формы, а далее мне обработчик всё правильно выдаёт кроме insert into, с моим вариантом только первый массив вставляется, а остальные нет.

Спустя 24 минуты, 27 секунд (7.10.2010 - 09:43) linker написал(а):
Дописывай в конец
mysql_query("...") or die(mysql_error());
Будет ошибка, показывай. Если нет, значит просто нет таких значений, которые бы были division='$division'

Спустя 14 минут, 56 секунд (7.10.2010 - 09:58) freaky написал(а):
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '...' at line 1

Спустя 2 минуты, 4 секунды (7.10.2010 - 10:00) sergeiss написал(а):
Цитата (freaky @ 7.10.2010 - 10:18)
Зачем? Мне нужен перенос конкретных данных по заданному критерию введёному в поле формы

Так я вот это как раз и не понимаю smile.gif Почему бы эти данные не выбирать тогда, когда они нужны? Ты же дублируешь данные, они (одни и те же) сидят у тебя в разных таблицах.
Или ты не умеешь делать "сложные" запросы, которые делают выборку одновременно из 2-х и более таблиц, согласно определенным связям между полями? Если это так (а похоже, это именно тот случай), то тебе надо более глубоко изучить SQL вместо такого вот дублирования данных.
Это будет намного полезнее, чем просто найти ошибку в этом запросе.

Спустя 10 минут, 30 секунд (7.10.2010 - 10:10) freaky написал(а):
я не совсем дублирую данные, мне нужен именно такой запрос...

Спустя 21 минута, 13 секунд (7.10.2010 - 10:31) olex0731 написал(а):
Во-первых, у вас в строчке
Цитата
while ($row = mysql_fetch_array ($res));

Символ ';' нужно убрать, т.к. ваш запрос не циклится...

Во-вторых,

Цитата
... VALUES ('$row[name]','$pole2','$pole3')");


'$row[name]' - оооочень не правильно. Сделайте хотя-бы '$row["name"]' ... Сделайте, чтобы название ассоц. ссылки выделено было в кавычки, какие - не важно, а потом дальше посмотрим....

Спустя 11 минут, 9 секунд (7.10.2010 - 10:43) linker написал(а):
freaky
smile.gif либо так
$res = mysql_query ("SELECT * FROM `number` WHERE `division` = '$division'");
$array_vals = array();
while ($row = mysql_fetch_assoc($res))
{
printf ("%s <br>", $row['name']);
$array_vals[] = "('" . $row['name'] . "','$pole2','$pole3')";
}
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES " . join(',', $array_vals)) or die(mysql_error());
либо так
$result435 = mysql_query("INSERT INTO `table` (`pole1`, `pole2`, `pole3`) VALUES (SELECT `name`, '$pole2', '$pole3' FROM `number` WHERE `division` = '$division')") or die(mysql_error());

Спустя 3 часа, 5 минут, 39 секунд (7.10.2010 - 13:48) freaky написал(а):
Всем спасибо, всё оказалось очень просто
if (isset($_POST['division'])) {$division = $_POST['division'];   }

$res = mysql_query ("SELECT * FROM number WHERE division='$division'");
$row = mysql_fetch_array ($res);

do {
$result435 = mysql_query ("INSERT INTO table (pole1,pole2,pole3) VALUES ('$row[name]','$pole2','$pole3')");
printf ("%s <br>", $row['name']);

}
while ($row = mysql_fetch_array ($res));
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.