2012-04-07 1 views
1

Msqli를 사용하여 다중 쿼리를 작성하면 쿼리는 phpmyadmin에서 원하는대로 작동합니다.MultyQuery가 phpmyadmin에서 작동 중이며 Mysqli에서 작동하지 않고 다른 서버에서 작동했습니다.

더 이상 mysqli에서 작동하지 않습니다. 쿼리는 서버간에 변경되지 않았습니다.

아래의 쿼리는 이전 램프 설치에서 작동했지만 현재에는 작동하지 않았습니다.

$SQLquery ='set @type = \'\'; 
set @num = 1; 
SELECT 
RA.`DATE` as DATES, 
RA.`ADDR` as ADDR, 
RA.`QID` as QID, 
RT.`TAGS` as TAG, 
Q.`id` AS QUID, 
Q.`ADDR` AS QADDR, 
Q.`ORIGINALTEXT` AS QTEXTS, 
Q.`DATE` AS QDATES, 
cs.`id` AS CUID, 
cs.`ADDR` AS CADDR, 
cs.`ORIGINALTEXT` AS CTEXTS, 
cs.`DATE` AS CDATES, 
sol.`id` AS SUID, 
sol.`ORIGINALTEXT` AS STEXTS, 
sol.`ADDR` AS SADDR, 
sol.`DATE` AS SDATES, 
prj.`id` AS PUID, 
prj.`ORIGINALTEXT` AS PTEXTS, 
prj.`ADDR` AS PADDR, 
prj.`DATE` AS PDATES, 
Max(Q.`DATE`) AS Q, 
Max(cs.`DATE`) AS C, 
Max(sol.`DATE`) AS S, 
Max(prj.`DATE`) AS P, 
#@num as row_number 
@num:= if(@type = RA.`ADDR`, [email protected], 1) as v_number, 
@type := RA.`ADDR` as dummy 
FROM  (SELECT `id`,`TAGS`, `QID` from `REL_TAG`) AS RT 
inner Join (SELECT `DATE`, `ADDR`, `QID` from `REL_ADDR` order by DATE) AS RA ON (RT.`QID` = RA.`QID`) 
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `QUESTION`) AS Q ON (RT.`QID` = Q.`QID`) and Q.`ADDR` = RA.`ADDR` 
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `CASES` order by `CASES`.`DATE`) AS cs ON (RT.`QID` = cs.`QID`) and cs.`ADDR` = RA.`ADDR` 
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `SOLUTION` order by `SOLUTION`.`DATE`) AS sol ON (RT.`QID` = sol.`QID`) and sol.`ADDR` = RA.`ADDR` 
Left outer Join (SELECT `id`,`DATE`, `ADDR`, `QID`, `ORIGINALTEXT` FROM `PROJECT` order by `PROJECT`.`DATE`) AS prj ON (RT.`QID` = prj.`QID`) and prj.`ADDR` = RA.`ADDR` 
where RT.`QID` = \''.NbOnly($Fetchmodifier).'\' Group by `QID`, addr, v_number LIMIT '.$Anstart.' ,'.$Ansnb.';'; 

쿼리가 로그에 오류를 반환하지 않습니다 업데이트, 그냥 아무것도 (NULL)을 반환하지 않습니다. 여기

일부가 아닌 모든 테이블이 있었, 내가 문제가 발견 한 MySQLi Multiquery

$mysqlin = new mysqli("localhost", "user", "pass", "db"); 
if (mysqli_error($mysqlin)) { 
    outputdataXML(sprintf("Connect Problem : %s\n", mysqli_error($mysqlin))); 
    exit(); 
} 
if ($mysqlin->multi_query($SQLquery)) { 
    do { 
      if ($result = $mysqlin->store_result()) { 
       while ($row = $result->fetch_array(MYSQLI_BOTH)) { 
        if($Foundrows = $row[0]){ //Maybe the problem is here ? 
        $Outputvalue[] = FormatFile($row); 
        } 
       } 
       $result->free(); 
      } 
      if ($mysqlin->more_results()) { 
      } 
     } while ($mysqlin->more_results() && $mysqlin->next_result()); 
} 
$mysqlin->close(); 
+0

오류 메시지가 있습니까? – jon

+0

@ 존 없음, 내가 MySQL의 로그 오류를 검사 활성화되지, 그냥 내가 보낸 쿼리를 보여, 내가이 PHP를 끝 – GuruJR

+0

를 반환하지 그럴 경우 오류가 발생하지 않을까요? –

답변

1

을 실행하는 PHP 코드 , 으로 어떤 기록하지 않고, EMPTY

나는 더미 레코드를 추가했다. 각 테이블에 어떤 테이블은 레코드를 가지고 있었지만, 어떤 것은 없다. 그리고 지금도 쿼리가 일치하지 않는다. 조인은 여전히 ​​적절하게 만들어지고있다.

나는 희망이 ppl의 많은 도움이됩니다. MySQL의 사용이을 "참여"할 때

, 당신은 1 에 기록하고, 조인 된 테이블의 모든 필요없이이 이제까지 사용할 경우 예 : 0, 00-00-0000, 널 , 0, empty

그때에만 쿼리에 포함 된 모든 가입 테이블이 작동합니다.

관련 문제