【发布时间】:2009-03-27 17:37:01
【问题描述】:
在一个语句中使用多个 MySQL 查询除了最小化代码还有什么好处。
如何使用 PHP(最好是 PDO)执行、检索和显示在一条语句中发送的多个 MySQL 查询的结果。
【问题讨论】:
在一个语句中使用多个 MySQL 查询除了最小化代码还有什么好处。
如何使用 PHP(最好是 PDO)执行、检索和显示在一条语句中发送的多个 MySQL 查询的结果。
【问题讨论】:
mysql_query() 不支持多个查询。但是,有一些解决方法:
http://www.dev-explorer.com/articles/multiple-mysql-queries
http://php.net/function.mysql-query
【讨论】:
无论您使用哪个数据库,将多个查询放在一个语句中会更有效。如果您单独执行查询,则必须通过网络(或者至少在同一台机器上的进程之间)调用数据库,获取到它的连接(包括身份验证),传入查询,返回结果集,并为每个查询释放连接。
即使您使用连接池,您仍然需要来回传递更多的请求。
因此,例如,如果您将两个查询合并为一个,您就可以为第二个查询保存所有来回调用的额外调用。您组合的查询越多,您的应用就会变得越高效。
再举一个例子,许多应用在启动时会填充列表(例如下拉列表)。这可以是许多查询。在一个调用中执行所有这些可以加快启动时间。
【讨论】:
今晚我正在做一些研究,偶然发现了这个线程。上面的答案都没有为这个简单的问题提供可行的解决方案。
使用 OO 方法,您可以使用 multi_query() 方法在单个连接中执行多个查询语句。
$db_connection->multi_query($query);
查询应该格式正确并用分号分隔 -> ;
有关如何处理 SELECT 数据的更多详细信息,请参阅 The PHP manual
【讨论】:
当您需要使用会话变量和临时表时,对同一个调用进行多个查询特别有用:
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;
【讨论】: