3

我想要一个选择查询和一个插入查询,我想使用函数(mysql_query)将它们一起执行,但它不起作用。我想做这样的事情:

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

有什么办法吗?

4

6 回答 6

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)的. 您可以尝试连接 以获得多个结果。$query13107265536
  2. 这不适用于 PHP < 4.3.0
  3. 如果在php.inisql.safe_mode中设置为 1,这将不起作用

另一种选择是使用mysqli 而不是mysql库。它支持 $mysqli->multi_query() 并在数组中为每个查询提供输出。

于 2012-05-19T07:02:30.493 回答
1

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

于 2012-05-19T07:02:23.320 回答
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
}
?>
于 2012-05-19T07:04:11.587 回答
0

没有一个 mysql api 可以同时处理多个查询,即使是 mysql consol 实用程序也会解析您的输入并执行一个又一个查询,而 php 的 mysql_query 不能。您可以编写自己的函数来执行此操作,也可以将所有查询放在一个数组中,然后为循环中的每个元素执行 mysql_query。

于 2012-05-19T07:10:01.080 回答
0

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

于 2012-05-19T07:10:04.817 回答
0

mysql_query()发送唯一查询

mysql_query

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

于 2012-05-19T07:13:23.020 回答