0

请注意,这个问题不是关于 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) 不为空,标题 varchar (255)
4

1 回答 1

1

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

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

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

或者您可以将三个语句包装到一个存储过程/函数中

于 2010-12-25T17:41:30.767 回答