如何在PHP中一起执行多个mysql查询?

时间:2012-05-19 06:53:28

标签: php mysql sql

我想要一个select查询和一个插件查询,我想用函数(mysql_query)一起完成它们,但它不起作用。 我想要做这样的事情:

$sql="select * from texts; insert into date ('time') values ('2012');";
mysql_query($sql);

有什么办法吗?

6 个答案:

答案 0 :(得分:5)

mysql_query()发送一个唯一的查询(不支持多个查询)。 这是默认的行为。但是有一个旁路。

但是如果你这样做,第一个查询的结果代码将作为mysql_query()的输出给出。

您只需将标志65536作为mysql_connect的第5个参数传递。该标志在MySQL Client flags中定义。

#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);

警告:

  1. 对于给定mysql_query($query)中的第一个查询 ,您将获得$query的结果。您可以尝试将13107265536连接,以获得多个结果。
  2. 这不适用于PHP< 4.3.0
  3. 如果 php.ini
  4. 中将sql.safe_mode设置为1,则无效

    另一种方法是使用mysqli代替mysql库。它支持$mysqli->multi_query()并为每个查询提供数组内的输出。

答案 1 :(得分:1)

MySQL不允许在单个语句中传递多个select查询。

答案 2 :(得分:0)

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
}
?>

答案 3 :(得分:0)

没有一个mysql api可以同时处理几个查询,甚至mysql consol实用程序解析你的输入并执行一个接一个的查询而php的mysql_query没有。您可以编写自己的函数,或者只是将所有查询放在一个数组中,并为循环中的每个元素执行mysql_query。

答案 4 :(得分:0)

您可以使用mysqli_multi_query函数但使用PHP mysqli扩展名。 (我建议你使用mysqli而不是PHP的mysql扩展,因为它包含更多的功能和设施)

答案 5 :(得分:0)

mysql_query()发送一个唯一的查询

请参阅mysql_query

对于多个查询,您可以看到 mysqli