5

除了最小化代码之外,在一个语句中使用多个 MySQL 查询有什么好处。

您如何使用 PHP(最好是 PDO)执行、检索和显示在一条语句中发送的多个 MySQL 查询的结果。

4

4 回答 4

7

mysql_query() 不支持多个查询。但是,有一些解决方法:

http://www.dev-explorer.com/articles/multiple-mysql-queries
http://php.net/function.mysql-query

于 2009-03-27T18:10:36.367 回答
4

无论您使用哪个数据库,将多个查询放在一个语句中会更有效。如果单独执行查询,则必须通过网络(或者至少在同一台机器上的进程之间)调用数据库,获取到它的连接(包括验证),传入查询,返回结果集,并为每个查询释放连接。

即使您使用连接池,您仍然需要来回传递更多的请求。

因此,例如,如果您将两个查询合并为一个,则您已经为第二个查询保存了所有来回的额外调用。您组合的查询越多,您的应用程序就会变得越高效。

再举一个例子,许多应用程序在启动时会填充列表(例如下拉列表)。这可以是许多查询。在一个呼叫中执行所有这些可以加快启动时间。

于 2009-03-27T18:08:36.497 回答
1

今晚我正在做一些研究,偶然发现了这个线程。上面的答案都没有为这个简单的问题提供可行的解决方案。

使用 OO 方法,您可以使用 multi_query() 方法在单个连接中执行多个查询语句。

$db_connection->multi_query($query);

查询应该格式正确并用分号 -> 分隔;

有关如何处理 SELECT 数据的更多详细信息,请参阅PHP 手册

于 2012-12-23T01:13:30.660 回答
0

当您需要使用会话变量和临时表时,同一调用中的多个查询特别有用:

select somecol, @somevar := group_concat( distinct somecol2 separator '|')
from sometbl
where
    somecol LIKE "fueh"
group by somecol;

select somecol2
from  sometbl
where
    somecol LIKE "nyan"
and
    vc_wp regexp concat( '(', @somevar, ')' )
order by somecol;
于 2013-03-12T12:50:24.383 回答