2010-12-25 6 views
0

Обратите внимание, что этот вопрос касается не самого mysql-запроса, а КАК ИСПОЛЬЗОВАТЬ его с php. Из-за отсутствия лучшего термина я назвал его многопроцессорным запросом. У меня есть запрос, который работает отлично в тузде клиенте командной строки, и в PHPMyAdmin, следующим образом:Как закодировать запрос mysql с несколькими командами в php

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, но это дает один результат ... командная строка и 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

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

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

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

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

+0

Отлично! Работает как шарм ... используется 1-е решение. Thnx – PHPGuyZim