Spec-Zone .ru
спецификации, руководства, описания, API

22.8.11.21. mysql_stmt_prepare()

int mysql_stmt_prepare(MYSQL_STMT *stmt, const char *stmt_str, unsigned long length)

Описание

Учитывая дескриптор оператора, возвращенный mysql_stmt_init(), готовит SQL-оператор, на который указывает строка stmt_str и возвращает значение состояния. Строковая длина должна быть дана length параметр. Строка должна состоять из единственного SQL-оператора. Недопустимо добавить завершающуюся точку с запятой (";") или \g к оператору.

Приложение может включать один или более маркеров параметра в SQL-оператор, встраивая вопросительный знак (?) символы в SQL представляют в виде строки в соответствующих позициях.

Маркеры являются законными только в определенных местах в SQL-операторах. Например, им разрешают в VALUES() список INSERT оператор (чтобы определить значения столбцов для строки), или в сравнении со столбцом в a WHERE пункт, чтобы определить сравнительное значение. Однако, им не разрешают для идентификаторов (таких как имена таблиц или имена столбцов), или определить оба операнда бинарного оператора такой как = знак "равно". Последнее ограничение необходимо, потому что было бы невозможно определить тип параметра. Вообще, параметры являются законными только в Языке манипулирования данными (DML) операторы, а не в Языке определения данных (DDL) операторы.

Маркеры параметра должны быть связаны с использованием переменных приложения mysql_stmt_bind_param() прежде, чем выполнить оператор.

Метаданные изменяются на таблицы или просматривают упомянутый готовыми операторами, обнаруживаются и вызывают автоматическую переподготовку оператора, когда это затем выполняется. Для получения дополнительной информации см. Раздел 8.9.4, "Кэширование Готовых Операторов и Сохраненных Программ".

Возвращаемые значения

Нуль, если оператор был подготовлен успешно. Ненулевой, если ошибка произошла.

Ошибки

Если подготовить работа была неудачна (то есть, mysql_stmt_prepare() возвращается ненулевой), сообщение об ошибке может быть получено, вызывая mysql_stmt_error().

Пример

См. Пример в Разделе 22.8.11.10,"mysql_stmt_execute()" .