Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.06.2011, 17:59   #1
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию не работает два запроса inser into

есть запрос:
$str="INSERT INTO "st_br" (nam, chb) VALUE ("1", 1);";
если его выполнить: mysql_query($str);, то работает.
если написать так:
$str="INSERT INTO "st_br" (nam, chb) VALUE ("1", 1); INSERT INTO "st_br" (nam, chb) VALUE ("1", 1);";
mysql_query($str);, то не работает..
если этот запрос выполнить в Navicat Lite, то выполняет..
Почему он на пхп не хочет выполнять??
SkrudjMakdak вне форума Ответить с цитированием
Старый 23.06.2011, 18:06   #2
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Что-то у вас там полный разврат с кавычками, похоже.
Откопайте стюардессу:
` - для экранирования названий столбцов, таблиц и баз данных в MySql.
" - для текстовых строк в PHP с парсингом на значения переменных, буде такие присутствуют в строке.
' - для текстовых строк в PHP без парсинга переменных и для текстовых строк в MySql. (если в них числовое значение и столбец таблицы имеет численную типизацию, то значение парсится автоматически до числа и уже как число вбивается в таблицу.

Navicat - полезная штука, я сам её очень люблю, но уж очень она попустительствует бездорожью и разгильдяйству. Как, впрочем, и PHP.

попробуйте как-то так:
PHP код:
$str "INSERT INTO `st_br` (nam, chb) VALUE ('1', '1'); INSERT INTO `st_br` (nam, chb) VALUE ('1', '1');";
mysql_query($str); 
Или даже так:
PHP код:
$str "INSERT INTO `st_br` (nam, chb) VALUE (1, 1); INSERT INTO `st_br` (nam, chb) VALUE (1, 1);";
mysql_query($str); 
PS: Пользуйтесь подсветкой PHP-синтаксиса !
Пусть не зенд, пусть вим даже.
даже форумная подсветка всё показывает
PHP код:
$str="INSERT INTO "st_br" (nam, chb) VALUE ("1", 1); INSERT INTO "st_br" (nam, chb) VALUE ("1", 1);"

Последний раз редактировалось graymaster; 23.06.2011 в 18:27.
graymaster вне форума Ответить с цитированием
Старый 23.06.2011, 18:20   #3
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

$str = "INSERT INTO `st_br` (nam, chb) VALUE ('1', '1');"; - работает
$str = "INSERT INTO `st_br` (nam, chb) VALUE ('1', '1'); INSERT INTO `st_br` (nam, chb) VALUE ('1', '1');"; - не хочет

вываливат: 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...
SkrudjMakdak вне форума Ответить с цитированием
Старый 23.06.2011, 18:46   #4
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Очень сильно извиняюсь за предположение про причины с кавычками (хотя у вас там действительно разврат, да). Проблема - в другом, и она не решается стандартными методами.
Был введён в заблужение нашими же собственными классами (там эмулируется подобная работа, зачем - не знаю. Иногда пользовался, но только сейчас понял, что это эмуляция.
php.net
Цитата:
mysql_query() sends a unique query (multiple queries are not supported)
Вот так

Быть может, это работает с MSSql, но теперь уже не уверен.

Последний раз редактировалось graymaster; 23.06.2011 в 18:51.
graymaster вне форума Ответить с цитированием
Старый 23.06.2011, 18:48   #5
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

так что же делать?? писать два mysql_query('...');??? и если мне понадобиться 20 запросов сделать??))) писать 20 раз??

Последний раз редактировалось SkrudjMakdak; 23.06.2011 в 18:52.
SkrudjMakdak вне форума Ответить с цитированием
Старый 23.06.2011, 18:55   #6
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Видимо да, придётся.
У нас это всё равно позже разбивается на 2 запроса и посылается по отдельности.
Когда 2 - это ерунда, если много больше - можно было бы попробовать сохранить все запросы в файл (через точку с запятой). Потом через консольную команду скормить этот файл mysql. Но это когда реально много запросов, более нескольких сотен, иначе просто невыгодно связываться.
graymaster вне форума Ответить с цитированием
Старый 23.06.2011, 19:07   #7
SkrudjMakdak
Форумчанин
 
Регистрация: 14.04.2010
Сообщений: 145
По умолчанию

спасибо большое за информацию.
SkrudjMakdak вне форума Ответить с цитированием
Старый 23.06.2011, 19:53   #8
graymaster
Форумчанин
 
Аватар для graymaster
 
Регистрация: 03.05.2011
Сообщений: 158
По умолчанию

Не смог найти ничего в mysql, но в mysqli есть плюшка, навзывается она mysqli_multi_query() и, соответственно названию, позволяет делать именно то, что вам нужно. (Ну, не зря же он improved). Попробуйте переключиться на него с mysql.
graymaster вне форума Ответить с цитированием
Старый 23.06.2011, 21:31   #9
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Код:
INSERT INTO `st_br` (nam, chb) VALUES ('1', '1'),  ('2', '2'),  ('3', '3')
Cronos20 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Два запроса к базе MySQL mixer94 PHP 12 28.10.2010 18:44
Два запроса MSD БД в Delphi 0 05.06.2010 18:59
не работает запрос на обновление для запроса на быборку ww01031977 Microsoft Office Access 1 04.05.2010 18:08
два запроса, которые нужно объединить в один. andrianov123 БД в Delphi 4 16.05.2008 16:06
Два запроса - один ExecSQL EdNovice БД в Delphi 1 27.06.2007 17:33