【问题标题】:When and How to use Multiple MySQL Queries with PHP (PDO)何时以及如何在 PHP (PDO) 中使用多个 MySQL 查询
【发布时间】:2009-03-27 17:37:01
【问题描述】:

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

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

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        $db_connection->multi_query($query);
        

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

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

        【讨论】:

          【解决方案4】:

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

          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;
          

          【讨论】:

            猜你喜欢
            • 2016-05-26
            • 1970-01-01
            • 2017-04-03
            • 2012-06-24
            • 2018-02-15
            • 1970-01-01
            • 2014-03-02
            • 1970-01-01
            相关资源
            最近更新 更多