PHP에서 데이터베이스를 운영 할 때 일반적인 요구 사항 중 하나는 복잡한 트랜잭션을 완료하거나 데이터 처리를 수행하기 위해 여러 SQL 문을 실행하는 것입니다. mysqli_multi_query () 함수는이를 위해 설계되었으며,이를 통해 여러 SQL 문을 한 번에 실행하여 효율성을 향상시키고 코드를 단순화 할 수 있습니다. 이 기사는 Connect () 함수를 사용하여 데이터베이스 연결을 설정 한 후 MySQLI_MULTI_QUERY ()를 사용하여 여러 SQL 문을 올바르게 실행하는 방법을 자세히 설명하고 리턴 결과를 처리합니다.
먼저 Connect () 함수를 통해 MySQL 데이터베이스에 연결됩니다. 이것이 유효한 MySQLI 객체를 반환하는 포장 된 함수라고 가정 해보십시오.
<?php
function connect() {
$host = 'localhost';
$user = 'root';
$password = 'password';
$database = 'testdb';
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die('연결이 실패했습니다: ' . $conn->connect_error);
}
return $conn;
}
?>
테이블 생성, 데이터 삽입 등과 같은 여러 SQL 문을 실행할 수 있다고 가정하고, 세미 콜론 ( ; )-변수 문자열로 결합하여 mysqli_multi_query () 로 전달할 수 있습니다.
<?php
$conn = connect();
$sql = "
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL
);
INSERT INTO users (username, email) VALUES ('장 산', 'zhangsan@m66.net');
INSERT INTO users (username, email) VALUES ('Li Si', 'lisi@m66.net');
";
if ($conn->multi_query($sql)) {
do {
// 첫 번째 결과 세트를 저장하십시오
if ($result = $conn->store_result()) {
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$result->free();
}
// 더 많은 결과 세트가있는 경우,루프를 계속하십시오
} while ($conn->more_results() && $conn->next_result());
} else {
echo "다중 명세서 실행이 실패했습니다: " . $conn->error;
}
$conn->close();
?>
SQL 문 형식 : 여러 SQL 문을 세미콜론으로 분리해야하며 각 문에는 올바른 구문이 있습니다.
결과 처리 : mysqli_multi_query ()가 실행 된 후 store_result () 및 more_results () 를 루핑하여 모든 결과 세트를 가로지 않아야합니다. 일부 진술이 결과를 반환하지 않더라도 다음 결과로 이동하려면 Next_Result () 에게 전화하십시오.
오류 처리 : 실행이 실패하면 손쉬운 디버깅을 위해 $ conn-> 오류를 통해 특정 오류 정보를 얻을 수 있습니다.