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));
}
참고 각 쿼리 후 세미콜론을 사용해야합니다
** ** 그렇게 할 수는 없습니다. foreach 루프에서 쿼리를 실행하여 쿼리에서'; \ n'을 제거해야합니다. –
\ n 방금 출력을 추가하고 쿼리를 읽으려고 방금 추가했습니다.하지만 오류가 없어도 오류가 발생합니다. 한 번에 여러 쿼리를 실행할 수 있습니까? 모든 것을 phpMyAdmin에 복사하고 쿼리를 실행하면 잘 작동합니다. – multimediaxp
어쩌면 한 번에 여러 쿼리를 실행하려고 할 수 있지만'\ n'을 (를) 제거해야합니다. mysqli_query가 그것을 허용하는지 나는 모른다. –