2014-02-15 2 views
0

PHP에서 루프를 사용하여 MySQL에 대한 문자열 쿼리를 만드는 스크립트를 실행 중입니다.Mysqli에서 여러 쿼리를 허용하지 않습니까?

나는 다음과 같은 오류를 얻을 스크립트를 실행 한 후 :

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE BANNERS SET pos=1 WHERE BID=5; UPDATE BANNERS SET pos=2 WHERE BID=1' at line 2"

오류 나는 쿼리를 반향과는 다음과 같습니다 직후 :

UPDATE BANNERS SET pos=0 WHERE BID=6; 
UPDATE BANNERS SET pos=1 WHERE BID=5; 
UPDATE BANNERS SET pos=2 WHERE BID=1; 

내가 복사 phpMyAdmin을 붙여 넣습니다 분명히 아무 문제없이 실행됩니다.

어떤 아이디어?

$order[0] = 'tr_6'; 
$order[1] = 'tr_5'; 
$order[2] = 'tr_1'; 

$query = ""; 

foreach($order as $pos => $value){ 
    $idvalue = str_replace('tr_','',$value); 
    $query .= "UPDATE BANNERS SET pos=$pos WHERE BID=$idvalue;\n"; 
} 

mysqli_query($connection,$query) or die(mysqli_error($connection)."<br/>$query"); 

감사 :

다음과 같습니다 배열이있다 :

다음은 PHP 코드입니다!

$query = "SELECT CURRENT_USER();"; 
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5"; 

/* execute multi query */ 
if (mysqli_multi_query($link, $query)) { 
    do { 
     /* store first result set */ 
     if ($result = mysqli_store_result($link)) { 
      while ($row = mysqli_fetch_row($result)) { 
       printf("%s\n", $row[0]); 
      } 
      mysqli_free_result($result); 
     } 
     /* print divider */ 
     if (mysqli_more_results($link)) { 
      printf("-----------------\n"); 
     } 
    } while (mysqli_next_result($link)); 
} 

참고 각 쿼리 후 세미콜론을 사용해야합니다

+2

** ** 그렇게 할 수는 없습니다. foreach 루프에서 쿼리를 실행하여 쿼리에서'; \ n'을 제거해야합니다. –

+0

\ n 방금 출력을 추가하고 쿼리를 읽으려고 방금 추가했습니다.하지만 오류가 없어도 오류가 발생합니다. 한 번에 여러 쿼리를 실행할 수 있습니까? 모든 것을 phpMyAdmin에 복사하고 쿼리를 실행하면 잘 작동합니다. – multimediaxp

+0

어쩌면 한 번에 여러 쿼리를 실행하려고 할 수 있지만'\ n'을 (를) 제거해야합니다. mysqli_query가 그것을 허용하는지 나는 모른다. –

답변

1

mysqli이 같은 mysqli_multiple_query 기능을 가진 여러 쿼리 할 수 ​​있습니다.

+0

그게 무슨 뜻입니까? 당신은 여러 결과가 ??? – multimediaxp

+0

전체 예제를 php.net에서 추가했습니다. –

+0

나는 지금 시험해 볼 것을 고맙다. – multimediaxp

관련 문제