mysqli::prepare
(PHP 5, PHP 7, PHP 8)
mysqli :: prepare - mysqli_prepare - 실행을 위한 SQL 문 준비
설명
객체 지향 스타일
public mysqli::prepare(string $query
): mysqli_stmt|false
절차적 스타일
mysqli_prepare(mysqli $mysql
, string $query
): mysqli_stmt|false
SQL 쿼리를 준비하고 명령문에 대한 추가 작업에 사용할 명령문 핸들을 반환합니다. 쿼리는 단일 SQL 문으로 구성되어야 합니다.
명령문 템플릿에는 자리 표시자라고도 하는 0개 이상의 물음표(?) 매개변수 마커가 포함될 수 있습니다. 매개변수 마커는 명령문을 실행하기 전에 mysqli_stmt_bind_param()을 사용하여 애플리케이션 변수에 바인딩되어야 합니다.
매개변수
mysql
- 절차적 스타일 전용: mysqli_connect() 또는 mysqli_init()에 의해 반환된 mysqli 객체
query
- 쿼리, 문자열. 단일 SQL 문으로 구성되어야 합니다.
SQL문은 적절한 위치에 물음표(?) 문자로 표시되는 매개변수 표시문자를 0개 이상 포함할 수 있습니다.
메모:
마커는 SQL 문의 특정 위치에서만 유효합니다. 예를 들어, INSERT 문의 VALUES() 목록(행에 대한 열 값 지정) 또는 WHERE 절의 열과 비교하여 비교 값을 지정할 수 있습니다.
그러나 식별자(예: 테이블 또는 열 이름)에 대해 또는 = 등호와 같은 이항 연산자의 두 피연산자를 모두 지정하는 데에는 허용되지 않습니다. 후자의 제한은 매개변수 유형을 결정하는 것이 불가능하기 때문에 필요합니다. 일반적으로 매개변수는 DML(데이터 조작 언어) 문에서만 유효하고 DDL(데이터 정의어) 문에서는 유효하지 않습니다.
반환 값
mysqli_prepare()는 명령문 객체를 반환하거나 오류가 발생하면 false
를 반환합니다.
Examples
예제 #1 mysqli::prepare() 예제
객체 지향 스타일
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$city = "Amersfoort";
/* create a prepared statement */
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
/* bind parameters for markers */
$stmt->bind_param("s", $city);
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($district);
/* fetch value */
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
절차적 스타일
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$city = "Amersfoort";
/* create a prepared statement */
$stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?");
/* bind parameters for markers */
mysqli_stmt_bind_param($stmt, "s", $city);
/* execute query */
mysqli_stmt_execute($stmt);
/* bind result variables */
mysqli_stmt_bind_result($stmt, $district);
/* fetch value */
mysqli_stmt_fetch($stmt);
printf("%s is in district %s\n", $city, $district);
위의 예는 다음을 출력합니다.
Amersfoort is in district Utrecht
기타
- mysqli_stmt_execute() - 준비된 명령문을 실행합니다.
- mysqli_stmt_fetch() - 준비된 명령문의 결과를 바인딩된 변수로 가져옵니다.
- mysqli_stmt_bind_param() - 변수를 준비된 명령문에 매개변수로 바인딩
- mysqli_stmt_bind_result() - 결과 저장을 위해 준비된 명령문에 변수를 바인딩합니다.
- mysqli_stmt_get_result() - 준비된 명령문에서 결과 세트를 mysqli_result 객체로 가져옵니다.
- mysqli_stmt_close() - 준비된 명령문을 닫습니다.