엄격한 표준: mysqli_multi_query로 mysqli_next_result() 오류 해결
"엄격한 표준" 메시지를 피하려면 적절한 mysqli_multi_query 활용을 보장하는 것이 중요합니다. 세미콜론을 제거하면 문제가 제거될 수 있지만 핵심 문제가 해결되지는 않습니다.
오류 메시지를 해결하려면 다음 제안 사항을 고려하십시오.
mysqli_next_result() 이해
mysqli_next_result()는 결과 포인터를 다음에 의해 생성된 다음 결과 세트로 이동시킵니다. mysqli_multi_query(). 그러나 실행에는 초기 결과 집합이 필요하며 이는 모든 경우에 보장되지는 않습니다.
해결책
'do' 루프 내에 다음 확인 사항을 통합하세요.
do { if ($result = mysqli_store_result($db)) { // 결과 집합 처리 } } while (mysqli_more_results($db) && mysqli_next_result($db));
대체 구문: WHILE{} 루프
클래식 "IF(){DO{} WHILE}" 구문은 유효하며 단순화되고 읽기 쉬운 대안입니다. is:
while((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, implode(';', $queries))))
이 접근 방식은 루프 실행 및 결과 세트 확인 조건을 명확하게 정의합니다.
종합 스니펫
포괄적인 솔루션을 사용하려면 결과 집합 유무에 관계없이 쿼리를 처리하려면 다음 스니펫을 고려하세요.
Classic "IF(){DO{} WHILE}" 구문:
if (mysqli_multi_query($mysqli, implode(';', $queries))) { do { echo "<br><br>", key($queries), ": ", current($queries); // display key:value @ pointer if ($result = mysqli_store_result($mysqli)) { // if a result set while ($rows = mysqli_fetch_assoc($result)) { echo "<br>Col = {$rows["Col"]}"; } mysqli_free_result($result); } echo "<br>Rows = ", mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs } while (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
재창조된 휠 "WHILE{}" 구문:
while((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query = mysqli_multi_query($mysqli, implode(';', $queries)))) { echo "<br><br>", key($queries), ": ", current($queries); // display array pointer key:value if ($result = mysqli_store_result($mysqli)) { while ($rows = mysqli_fetch_assoc($result)) { echo "<br>Col = {$rows["Col"]}"; } mysqli_free_result($result); } echo "<br>Rows = ", mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs } if ($mysqli_error = mysqli_error($mysqli)) { echo "<br><br>", key($queries), ": ", current($queries), "Syntax Error:<br>$mysqli_error"; // display array pointer key:value }
다음 스니펫은 결과 집합이 있거나 없는 쿼리를 효과적으로 처리하고 디버깅 목적을 위한 자세한 오류 처리 기능을 제공합니다.
위 내용은 mysqli_multi_query로 \'엄격한 표준: mysqli_next_result() 오류 해결\'을 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!