(PHP 5, PHP 7, PHP 8)
mysqli::prepare -- mysqli_prepare — Подготавливает SQL выражение к выполнению
Объектно-ориентированный стиль
Процедурный стиль
Подготавливает SQL-запрос и возвращает указатель на это выражение, который может использоваться для дальнейших операций с этим выражением. Запрос должен состоять из одного SQL-выражения.
Шаблон оператора может содержать ноль или несколько вопросительных знаков (?
), меток параметров, также называемых заполнителями. Метки параметров должны быть привязаны к переменным приложения с помощью mysqli_stmt_bind_param() перед выполнением выражения.
mysql
Только для процедурного стиля: объект mysqli, который вернула функция mysqli_connect() или функция mysqli_init().
query
Текст запроса в виде строки. Должен состоять из одного SQL-выражения.
Выражение SQL может содержать ноль или более меток параметров, представленных знаками вопроса (?
) в соответствующих позициях.
Замечание:
Эти метки можно встраивать только в определённые места в выражении. Например, они разрешены в списке
VALUES()
выраженияINSERT
(чтобы задать значения столбцов для строки), или в операциях сравнения предложенияWHERE
для задания сравниваемого значения. Однако они не разрешены в качестве идентификаторов (таких как имена таблиц или столбцов).
mysqli_prepare() возвращает объект запроса или false
в случае ошибки.
Если уведомления об ошибках mysqli включены (MYSQLI_REPORT_ERROR
) и запрошенная операция не удалась, выдаётся предупреждение. Если, кроме того, установлен режим MYSQLI_REPORT_STRICT
, вместо этого будет выброшено исключение mysqli_sql_exception.
Пример #1 Пример использования mysqli::prepare()
Объектно-ориентированный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$city = "Amersfoort";
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($district);
$stmt->fetch();
printf("%s находится в округе %s\n", $city, $district);
Процедурный стиль
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$city = "Amersfoort";
$stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?");
mysqli_stmt_bind_param($stmt, "s", $city);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $district);
mysqli_stmt_fetch($stmt);
printf("%s находится в округе %s\n", $city, $district);
?>
Результат выполнения приведённых примеров:
Amersfoort находится в округе Utrecht