Forum Webscript.Ru

Программирование => PHP => Тема начата: a@mail.dux.ru от 15 Марта 2003, 02:00:07

Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: a@mail.dux.ru от 15 Марта 2003, 02:00:07
у меня есть несколько запросов на ардейт базы данных MySql

я хочу их сделть одним махом. когда я ввожу их в окно          Выполнить SQL запрос(ы) на БД в пхпМайадмин, то после каждого запроса ставлю ; и все работает.

а вот когда я тоже самое делаю в php не работает.
пример запроса, кот надо выполнить.

update page set field1=3 where id=1;
update page set field1=6 where id=2;

пишу:

$SQLUpdate="update page set field1=3 where id=1;
update page set field1=6 where id=2;" ;

 mysql_query($SQLUpdate) or die("Update ERROR ");

выдает ошибку.

не хочу делать апдейт несколько раз, так как у меня выполняется цикл и в нем могут быть десятки таких обновлений.
А вот запомнить их и одним разом выполнить было бы здорово.
Может кто чего подскажет?
Спасибо
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: Меняздесьдавнонет от 15 Марта 2003, 09:38:03
ну, в принципе ты можешь загнать их все в файл, и выполнить запросом load data infile, но при всего нескольких десятках запросов овчинка выделки не стоит.

А то, что mysql_query не позволяет выполнять больше одного запроса - это фича.
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: a@mail.dux.ru от 15 Марта 2003, 12:11:54
что такое фича? как понимаю "неправда?" но у меня не работает
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: Britva от 15 Марта 2003, 13:40:20
то, что специально так сделано, чтобы mysql_query больше одного запроса не выполняла.
или напиши свою ф-ю, которая будет разбирать запросы, разделенные, например ";"
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: Меняздесьдавнонет от 16 Марта 2003, 17:04:17
калька с feature. антоним слова "bug"
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: a@mail.dux.ru от 16 Марта 2003, 21:16:00
Britva
дело в том, что в пхп я так и делаю, как ты указываешь, только вручную пишу

$SQLUpdate="update page set field1=3 where id=1;
update page set field1=6 where id=2;" ;

И нерабоатет.

RomikChef
То есть как я тебя понял, мой двойной запрос через ; должен рабоать?
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: Макс от 16 Марта 2003, 22:36:15
a@mail.dux.ru
тебе же сказали, разбивать запросы надо. То есть в mysql_query() нужно передавать один UPDATE-запрос.

mysql_query("update page set field1=3 where id=1");
mysql_query("update page set field1=6 where id=2");

Единственный AFAIK выход подсказал тебе RomikChef -
load data infile \'your_file.txt\' replace into table ...
MySQL очень быстро (судя по ману) выполняет такие запросы, но тебе прийдется немножко поизвращаться с созданием файла
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: Croaker от 23 Марта 2003, 03:13:37
http://pear.sourceforge.net/manual/core.db.prepare.php
Название: как за один раз выполнить несколько update-ов в MySql череез php
Отправлено: a@mail.dux.ru от 31 Марта 2003, 14:59:13
Про LOAD DATA LOCAL INFILE - возникли проблемы

вот добавляю данные в таблицу из файла таким скриптом.

$zapr="LOAD DATA INFILE \'C:/www/plevel3.txt\'
INTO TABLE xxxx3
fields terminated
by \',\'
LINES TERMINATED BY \'\\;
\'
";

mysql_query($zapr);

содержимое plevel3.txt:
INSERT INTO xxxx3 VALUES (1, 0, 1, 1, \'Моя семья\', \'\', \'0\', 1);
INSERT INTO xxxx3 VALUES (2, 0, 1, 2, \'Я\', \'\', \'0\', 1);
INSERT INTO xxxx3 VALUES (3, 0, 1, 3, \'Услуги и цены\', \'\', \'0\', 1);

все хорошо, кроме одного -текстовые поля, заключенные в \' \' так и добавляются в кавычках
те в базе данных это выглядит вот так:

1 0 1 1 \'Моя семья\' \'\' \'0\' 1
2 0 1 2 \'Я\' \'\' \'0\' 1
3 0 1 3 \'Услуги и цены\' \'\' \'0\' 1

Как мне избавиться от этих кавычек при добавлении?
Спасибо