(PHP 5, PHP 7)
mysqli::prepare -- mysqli_prepare — Подготавливает SQL выражение к выполнению
Объектно-ориентированный стиль
Процедурный стиль
Подготавливает SQL запрос и возвращает указатель на это выражение, который может использоваться для дальнейших операций с этим выражением. Запрос должен состоять из одного SQL выражения.
Метки параметров должны быть связаны с переменными приложения функциями mysqli_stmt_bind_param() и/или mysqli_stmt_bind_result() до запуска запроса или выборки строк.
link
Только для процедурного стиля: Идентификатор соединения, полученный с помощью mysqli_connect() или mysqli_init()
query
Текст запроса в виде строки.
Замечание:
Нет необходимости в завершающей точке с запятой или символе \g в конце выражения.
Этот параметр может содержать одну или несколько меток параметров SQL запроса. Эти метки можно добавить путем встраивания знаков вопроса (?) в места выражения, где требуется подставлять параметры.
Замечание:
Эти метки можно встраивать только в определенные места в выражении. Например, они допустимы в списке VALUES() выражения INSERT (чтобы задать значения столбцов для строки), или в операциях сравнения предложения WHERE для задания сравниваемого значения.
Тем не менее, эти метки недопустимы в качестве идентификаторов (таких как имена столбцов или таблиц), а также в списке псевдонимов столбцов предложения SELECT. Нельзя также использовать параметры для задания обоих операндов бинарного оператора (например, знак равенства =). Последнее ограничение необходимо, так как в противном случае невозможно будет определить тип операндов. Еще недопустимо сравнивать метку параметра с NULL выражением ? IS NULL. В основном, параметры допустимы в выражениях языка манипулирования данными (DML), и недопустимы в выражениях языка определения данных (DDL).
mysqli_prepare() возвращает объект запроса или FALSE
в
случае ошибки.
Пример #1 Пример использования mysqli::prepare()
Объектно-ориентированный стиль
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* создаем подготавливаемый запрос */
if ($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);
/* закрываем запрос */
$stmt->close();
}
/* закрываем соединение */
$mysqli->close();
?>
Процедурный стиль
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* проверка соединения */
if (mysqli_connect_errno()) {
printf("Не удалось подключиться: %s\n", mysqli_connect_error());
exit();
}
$city = "Amersfoort";
/* создаем подготавливаемый запрос */
if ($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);
/* закрываем запрос */
mysqli_stmt_close($stmt);
}
/* закрываем соединение */
mysqli_close($link);
?>
Результат выполнения данных примеров:
Amersfoort is in district Utrecht