|
|
|
| Вот я заделал в PHP два запроса в две переменные. К примеру: INSERT и UPDATE.
Можно ли их как-нибудь объединить в одну переменную, и послать в MySQL одной комманодой, т.е. одной mysql_query() ? | |
|
|
|
|
|
|
|
для: tAleks
(12.09.2006 в 21:29)
| | а смысл? | |
|
|
|
|
|
|
|
для: st.Ass
(12.09.2006 в 21:30)
| | ну надо так.
Просто по задумке в проге, в зависимости от условия формируются запросы.
Если .... то получается надо отправлять 1 запрос...
Если .... то - 2 запроса...
Запросы формируются в сеердине, а посылаются в конце, одним запросом... | |
|
|
|
|
|
|
|
для: 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());
?>
|
| |
|
|
|
|
|
|
|
для: 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(), может что другое есть? | |
|
|
|
|
|
|
|
для: tAleks
(12.09.2006 в 22:09)
| | После точки с запятой и <Enter> консольный клиент mysql отправляет запрос на выполнение и ждёт ответа, т.е. если первый запрос выполняется час, вы будете ждать час, прежде чем отправить новый запрос из этого окна. mysql> по сути эквивалентно одному вызову mysql_query(). Точку с запятой можно менять на другой символ (так обычно поступают при составлении хранимых процедур), но факт остаётся фактом, запрос отправляется один, в API предоставляемом MySQL для PHP нет специальных функций, но такую функцию можно написать самостоятельно. Т.е. принимать строку или массив, разбирать и выполнять несколько запросов. | |
|
|
|
|
|
|
|
для: tAleks
(12.09.2006 в 21:29)
| | По теории можно, но я думаю это надо будет писать собственую функцию или класс (наверное второе лучше).... А вообще действительно, зачем? Медлено выполняются mysql_connect() и mysql_select_db()... порпобуй так :)
<?php
$function query($query1, $query2)
{
mysql_query($query1);
mysql_query($query2);
}
?>
|
Но это только если тебе просто лень писать второй раз mysql_query, а так незнаю... тут просто надо подумать и всё :) | |
|
|
|