Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выполнение нескольких запросов за один раз
 
 автор: tAleks   (12.09.2006 в 21:29)   письмо автору
 
 

Вот я заделал в PHP два запроса в две переменные. К примеру: INSERT и UPDATE.

Можно ли их как-нибудь объединить в одну переменную, и послать в MySQL одной комманодой, т.е. одной mysql_query() ?

   
 
 автор: st.Ass   (12.09.2006 в 21:30)   письмо автору
 
   для: tAleks   (12.09.2006 в 21:29)
 

а смысл?

   
 
 автор: tAleks   (12.09.2006 в 21:35)   письмо автору
 
   для: st.Ass   (12.09.2006 в 21:30)
 

ну надо так.
Просто по задумке в проге, в зависимости от условия формируются запросы.
Если .... то получается надо отправлять 1 запрос...
Если .... то - 2 запроса...

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

   
 
 автор: cheops   (12.09.2006 в 21:37)   письмо автору
 
   для: tAleks   (12.09.2006 в 21:29)
 

Нет, функция, mysql_query() не может выполнять более одного запроса за один раз, но вы если запросов у вас очень много, вы можете поместить их в массив и выполнить в цикле - так будет удобнее
<?php
  $query
[] = "INSERT ...";
  
$query[] = "DELETE ...";
  foreach(
$query as $single_query) if(!mysql_query($single_query)) exit(mysql_error());
?>

   
 
 автор: tAleks   (12.09.2006 в 22:09)   письмо автору
 
   для: cheops   (12.09.2006 в 21:37)
 

Да, но в коммандной строке MySQL ведь можно написать примерно так:

mysql> UPDATE prod SET price = (price/28.5)*28.0;
mysql> SELECT name, price FROM prod;


Это же 2 запроса? Разве никак нельзя послать такую "конструкцию" из PHP? Где то, я слышал, не помню где, и не помню как дословно, но суть в том, что есть какая-то функция, которая меняет окончание запроса ";" на какой-то другой символ, и якобы это сделано именно для того, чтобы посылать именно такие "конструкции" из прикладных программ, и помоему там даже было сказано что из PHP.

Где я это слышал, не помню, и так ли это на самом деле тоже не знаю...

Вопрос остается в том, можно ли такую "конструкцию" из PHP заслать в MySQL, как из коммандной строки? Может не mysql_query(), может что другое есть?

   
 
 автор: cheops   (12.09.2006 в 22:17)   письмо автору
 
   для: tAleks   (12.09.2006 в 22:09)
 

После точки с запятой и <Enter> консольный клиент mysql отправляет запрос на выполнение и ждёт ответа, т.е. если первый запрос выполняется час, вы будете ждать час, прежде чем отправить новый запрос из этого окна. mysql> по сути эквивалентно одному вызову mysql_query(). Точку с запятой можно менять на другой символ (так обычно поступают при составлении хранимых процедур), но факт остаётся фактом, запрос отправляется один, в API предоставляемом MySQL для PHP нет специальных функций, но такую функцию можно написать самостоятельно. Т.е. принимать строку или массив, разбирать и выполнять несколько запросов.

   
 
 автор: DEM   (12.09.2006 в 21:37)   письмо автору
 
   для: tAleks   (12.09.2006 в 21:29)
 

По теории можно, но я думаю это надо будет писать собственую функцию или класс (наверное второе лучше).... А вообще действительно, зачем? Медлено выполняются mysql_connect() и mysql_select_db()... порпобуй так :)


<?php
$function query
($query1$query2)
{
mysql_query($query1);
mysql_query($query2);
}

?>


Но это только если тебе просто лень писать второй раз mysql_query, а так незнаю... тут просто надо подумать и всё :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования