mysqli 다중 쿼리 - 세트 변수는 부울 오류를 생성/이것을 건너 뛰는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1227022

  •  22-07-2019
  •  | 
  •  

문제

Phpmyadmin을 통해 잘 작동하는 다음 간단한 쿼리를 얻었지만 PHP 웹 사이트에 추가하면 결과가 반환되지 않으며 오류/경고 메시지도 없습니다. "set @n = -1;"를 제거하면 그런 다음 잘 작동합니다.

<?php 
$db_connect = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, true);
mysql_select_db(DB_NAME, $db_connect);

$test_query = mysql_query("SET @N=-1;SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`;");

for ($i = 0; $i <= mysql_num_rows($test_query)-1; $i++) {
   echo mysql_result($db_directorymap, $i, 0) . " " . mysql_result($db_directorymap, $i, 1) . "<br />";
}
?>

업데이트 : 방금 MySQLI로 이사했지만 물론 MySQL 문과 MySQLI_Multi_Query에 여전히 문제가 있습니다. 쿼리의 첫 번째 부분을 실행하면 반환 된 결과가 비어 있으므로 부울 오류가 주어집니다. 첫 번째 결과 세트를 건너 뛰어야한다고 생각하지만 어떻게 해야할지 모르겠습니까?

도움이 되었습니까?

해결책

그 때문입니다 mysql_query 함수는 하나의 쿼리 만 허용하지만 세미콜론으로 분리 된 두 개를주었습니다. 중 하나를 시도하십시오 :

  1. 각 쿼리를 개별적으로 실행합니다 (이것이 작동하는지 모르겠습니다) :

    mysql_query( "SET @N=-1" );
    mysql_query( "SELECT `id`, (@N:=@N+1) AS `mycount` FROM `mydb`" );
    
  2. 사용 mysqli 이랑 multi_query 기능 (또는 a pdo 하나가있는 경우 동등합니다).

업데이트 된 질문에 답하려면 : Multi_Query의 PHP 설명서 페이지를 확인하십시오. 나는 당신이 사용하고 싶다고 생각합니다 mysqli::next_result. 절차 적 스타일을 사용하여 이와 같은 것 :

mysqli_multi_query($link, $query);
mysqli_next_result($link);

if ($result = mysqli_store_result($link)) {
    while ($row = mysqli_fetch_row($result)) {
        printf("%s\n", $row[0]);
    }
    mysqli_free_result($result);
}

다른 팁

MySQL_Query를 통한 여러 쿼리는 지원되지 않으므로 후속 SELECT 명령이 아닌 SET 명령 만 실행하고 있다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top