Как закодировать «многокомандный» запрос mysql в php - PullRequest
0 голосов
/ 25 декабря 2010

Обратите внимание, что этот вопрос не о самом запросе 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-скрипте, но для жизни не могу. Я пытался использовать транзакцию Близнецов, но это дает один результат .... командная строка и 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") 

... не работает.

моя структура таблицы проста:

table name: press
newscat int(11) not null, headline varchar (255)

1 Ответ

1 голос
/ 25 декабря 2010

Вы должны разделить несколько запросов, как

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

Вышеуказанное будет работать, если соединение с тем же сервером базы данных.

ИЛИ вы можете заключить три оператора в хранимую процедуру / функцию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...