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