6.4.22 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() оператора (для указания значений столбцов для строки) или в сравнении со столбцом в части WHERE (для указания значения сравнения). Однако они недопустимы для идентификаторов (таких как имена таблиц или столбцов), или для указания обоих операндов бинарного оператора, например, знака равенства (=). Последнее ограничение необходимо, так как невозможно определить тип параметра. В общем случае, параметры допустимы только в операторах языка манипулирования данными (DML), а не в операторах языка определения данных (DDL).
Маркеры параметров должны быть связаны с переменными приложения с помощью функций mysql_stmt_bind_param() или mysql_stmt_bind_named_param() перед выполнением запроса.
Изменения метаданных таблиц или представлений, на которые ссылаются подготовленные запросы, обнаруживаются и приводят к автоматической повторной подготовке запроса при его последующем выполнении. Для получения дополнительной информации см. .
Значения возврата
Ноль в случае успеха. Неноль, если произошла ошибка.
Ошибки
-
Команды были выполнены в неправильном порядке.
-
Недостаточно памяти.
-
Сервер MySQL вышел из строя.
-
Соединение с сервером было потеряно во время запроса.
-
Произошла неизвестная ошибка.
Если операция подготовки не удалась (то есть, функция mysql_stmt_prepare() вернула ненулевое значение), сообщение об ошибке можно получить, вызвав функцию mysql_stmt_error().
Пример
См. Пример в разделе 6.4.11, «mysql_stmt_execute()».
© 2025 Oracle
Licensed under the GPLv2 License.