0

この質問はmysqlクエリ自体に関するものではなく、phpから実行する方法に関するものであることに注意してください。より良い用語がないため、私はそれをマルチコマンドクエリと呼びました。次のように、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スクリプトで実行したいのですが、私の人生ではできません。geminiトランザクションを使用してみましたが、1つの結果が得られます...コマンドラインと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)はnullではなく、見出しvarchar(255)
4

1 に答える 1

1

次のように、複数のクエリを分割する必要があります

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

上記は、接続が同じデータベースサーバーに対するものである場合に機能します。

または、3つのステートメントをストアドプロシージャ/関数にラップできます

于 2010-12-25T17:41:30.767 に答える