Я хочу, чтобы запрос select и запрос на вставку, который я хочу сделать вместе, используя функцию (mysql_query), но она не работает. Я связываюсь, чтобы сделать что-то вроде этого:
$sql="select * from texts; insert into date ('time') values ('2012');"; mysql_query($sql);
есть ли способ сделать это?
mysql_query()
отправляет уникальный запрос (несколько запросов не поддерживаются) . Это поведение по умолчанию. Однако для этого есть обход.
Однако, если вы это сделаете, то будет mysql_query()
только код результата первого запроса в качестве вывода mysql_query()
.
Вам просто нужно передать флаг 65536 в качестве 5-го параметра mysql_connect. флаг определяется в флажках MySQL Client .
#define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */ #define CLIENT_MULTI_RESULTS 131072 /* Enable/disable multi-results */
Поэтому отредактируйте свой код mysql_connect()
чтобы он соответствовал этому:
mysql_connect($host, $username, $password, false, 65536);
Предупреждение:
mysql_query($query)
для первого запроса только в заданном $query
. Вы можете попробовать 131072
с 65536
для получения нескольких результатов. sql.safe_mode
устанавливается как 1 в php.ini Другой альтернативой будет использование mysqli
вместо библиотеки mysql
. Он поддерживает $mysqli->multi_query()
и дает выходные данные в массиве для каждого запроса.
MySQL не позволяет передавать более одного запроса select в одном выражении.
Ни один из mysql api не может обрабатывать несколько запросов одновременно, даже утилита mysql consol анализирует ваш ввод и выполняет один запрос за другим, а mysql_query php этого не делает. Вы можете просто написать свою собственную функцию или просто поместить все запросы в массив и выполнить mysql_query для каждого элемента цикла.
Вы можете использовать функцию mysqli_multi_query, но с расширением mysqli PHP. (Я рекомендую использовать mysqli вместо расширения mysql PHP, поскольку он включает в себя гораздо больше функций и возможностей)
mysql_query()
отправляет уникальный запрос
см. mysql_query
для множественного запроса вы можете увидеть mysqli
mysql_query()
не поддерживает выполнение нескольких запросов обычным способом. используйте что-то вроде ниже.
<?php $str="query1;query2;"; // say $str="select * from texts; insert into date ('time') values ('2012');"; $query = explode(';',$str); // Run the queries foreach($query as $index => $sql) { $result = mysql_query($sql); // Perform an additional operations here } ?>