2010-12-25 2 views
0

이 질문은 mysql 쿼리 자체가 아니라 PHP에서 실행 방법에 관한 것입니다. 더 나은 용어가 부족하여 여러 명령 쿼리라고했습니다. 나는 MySQL의 명령 줄 클라이언트에서 완벽하게 실행되는 쿼리가 있고, phpMyAdmin을에,로는 다음과 같습니다PHP에서 "다중 명령"mysql 쿼리를 코딩하는 방법

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

여러 쿼리를 분할해야

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

연결이 동일한 데이터베이스 서버에 경우 위의 작동

처럼.

또는 당신은

+0

우수한 저장 프로 시저/함수에 세 개의 문을 포장 할 수 있습니다! 매력처럼 작동합니다 ... 첫 번째 솔루션을 사용했습니다. Thnx – PHPGuyZim