【问题标题】:How to code a "multi-command" mysql query in php如何在 php 中编写“多命令”mysql 查询
【发布时间】:2010-12-25 17:16:06
【问题描述】:

请注意,这个问题不是关于 mysql 查询本身,而是如何从 php.ini 运行它。 由于没有更好的术语,我将其称为多命令查询。我有一个在 mysql 命令行客户端和 phpmyadmin 中完美运行的查询,如下所示:

SET @counter = 0;
SET @category = '';

SELECT
    *
FROM
(
    SELECT
        @counter := IF(press.newscat = @category, @counter+1, 0) AS counter,
        @category := press.newscat,
        press.*
    FROM
    (
        SELECT
                *
        FROM press
        ORDER BY newscat, added DESC
    ) press
) press
HAVING counter < 2 limit 50

我想在 php 脚本中执行相同的操作,但对于我的生活,不能。我尝试使用双子座事务,但这给出了一个结果....命令行和 phpmyadmin 给了我更多的结果...如预期的那样。

我有经验,并且精通通常的 mysql_fetch_object mysql_fetch_array 位...但是如何运行此查询?

有点像

$phpquery = mysql_query("SET @counter = 0;
SET @category = '';

SELECT
    *
FROM
(
    SELECT
        @counter := IF(press.newscat = @category, @counter+1, 0) AS counter,
        @category := press.newscat,
        press.*
    FROM
    (
        SELECT
        *
        FROM press
        ORDER BY newscat, added DESC
    ) press
) press
HAVING counter < 2 limit 50") 

...不起作用。

我的表结构很简单:

表名:按 newscat int(11) not null,headline varchar (255)

【问题讨论】:

    标签: mysql mysql-dependent-subquery


    【解决方案1】:

    您应该拆分多个查询,例如

    mysql_query('SET @counter = 0');
    mysql_query('SET @category = ""');
    $phpquery = mysql_query(" ... /* your length query */ ");
    

    如果连接到同一个数据库服务器,上述方法将起作用。

    或者你可以将三个语句包装成一个存储过程/函数

    【讨论】:

    • 太棒了!像魅力一样工作......使用第一个解决方案。谢谢
    猜你喜欢
    • 2014-05-24
    • 1970-01-01
    • 2021-03-04
    • 2019-07-30
    • 1970-01-01
    • 2012-12-13
    • 2018-03-04
    • 2019-06-10
    • 2017-11-28
    相关资源
    最近更新 更多