Подготавливает SQL выражение к выполнению


mysqli_prepare

(PHP 5)

mysqli::prepare -- mysqli_prepare Подготавливает SQL выражение к выполнению

Описание

Объектно-ориентированный стиль

mysqli_stmt mysqli::prepare ( string $query )

Процедурный стиль

mysqli_stmt mysqli_prepare ( mysqli $link , string $query )

Подготавливает 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 

Смотрите также

  • mysqli_stmt_execute() - Выполняет подготовленный запрос
  • mysqli_stmt_fetch() - Связывает результаты подготовленного выражения с переменными
  • mysqli_stmt_bind_param() - Привязка переменных к параметрам подготавливаемого запроса
  • mysqli_stmt_bind_result() - Привязка переменных к подготавленному запросу для размещения результата
  • mysqli_stmt_close() - Закрывает подготовленный запрос