mysqli::execute_query
mysqli_execute_query
(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — SQL 문 준비, 매개변수 바인딩 및 실행
설명
객체 지향 스타일
public mysqli::execute_query(string $query
, ?array $params
= null
): mysqli_result|bool
절차적 스타일
mysqli_execute_query(mysqli $mysql
, string $query
, ?array $params
= null
): mysqli_result|bool
SQL 쿼리를 준비하고 매개 변수를 바인딩하고 실행합니다. mysqli::execute_query() 메소드는 mysqli::prepare(), mysqli_stmt::bind_param(), mysqli_stmt::execute(), mysqli_stmt::get_result()의 단축키이다.
명령문 템플릿에는 자리 표시자라고도 하는 0개 이상의 물음표(?
) 매개변수 마커가 포함될 수 있습니다. 매개변수 값은 params
매개변수를 사용하여 배열로 제공되어야 합니다.
준비된 문은 후드 아래에서 생성되지만 함수 외부에는 노출되지 않습니다. mysqli_stmt 객체와 마찬가지로 문의 속성에 액세스하는 것은 불가능합니다. 이러한 제한으로 인해 상태 정보는 mysqli 객체에 복사되고 해당 메서드를 사용하여 사용할 수 있습니다. mysqli_affected_rows() 또는 mysqli_error().
mysqli_execute_query()에 서버의 max_allowed_packet
보다 긴 문장을 전달하는 경우, 반환되는 에러 코드는 운영체제에 따라 다르다. 동작은 다음과 같습니다.
- Linux에서 오류 코드 1153을 반환합니다. 오류 메시지는
을 의미합니다.max_allowed_packet
바이트보다 큰 패킷이 있음 - Windows에서 오류 코드 2006을 반환합니다. 이 오류 메시지는
서버가 사라졌음
을 의미합니다.
매개변수
mysql
- 절차적 스타일 전용: mysqli_connect() 또는 mysqli_init()에 의해 반환된 mysqli 객체
query
- 쿼리, 문자열. 단일 SQL 문으로 구성되어야 합니다.
SQL문은 적절한 위치에 물음표(
?
) 문자로 표시되는 매개변수 표시문자를 0개 이상 포함할 수 있습니다.메모:마커는 SQL 문의 특정 위치에서만 유효합니다. 예를 들어,
INSERT
문의VALUES()
목록(행에 대한 열 값 지정) 또는WHERE
절의 열과 비교하여 비교 값을 지정할 수 있습니다. 그러나 식별자(예: 테이블 또는 열 이름)에는 허용되지 않습니다. params
- 실행 중인 SQL 문에 바인딩된 매개 변수 수만큼 요소가 있는 선택적 목록 배열입니다. 각 값은 문자열로 처리됩니다.
반환 값
실패 시 false
를 반환합니다. SELECT, SHOW, DESCRIBE
또는 EXPLAIN
과 같은 결과 집합을 생성하는 성공적인 쿼리의 경우 mysqli_result 객체를 반환합니다. 다른 성공적인 쿼리의 경우 true
를 반환합니다.
Examples
예제 #1 mysqli::execute_query() 예제
객체 지향 스타일
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = $mysqli->execute_query($query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
?>
절차적 스타일
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = mysqli_execute_query($link, $query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
위의 예는 다음과 유사한 결과를 출력합니다.
Aachen (Nordrhein-Westfalen) Augsburg (Baijeri) Bergisch Gladbach (Nordrhein-Westfalen) Berlin (Berliini) Bielefeld (Nordrhein-Westfalen)
기타
- mysqli_prepare() - 실행을 위해 SQL 문을 준비합니다.
- mysqli_stmt_execute() - 준비된 명령문을 실행합니다.
- mysqli_stmt_bind_param() - 변수를 준비된 명령문에 매개변수로 바인딩
- mysqli_stmt_get_result() - 준비된 명령문에서 결과 집합을 mysqli_result 객체로 가져옵니다.