6.4.22 mysql_stmt_prepare()

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

描述

给定由 mysql_stmt_init() 返回的语句句柄,准备由字符串 stmt_str 指向的 SQL 语句并返回一个状态值。字符串长度应由 length 参数给出。字符串必须包含一个 SQL 语句。不应在语句中添加终止分号 (;) 或 \g

应用程序可以通过在 SQL 字符串中的适当位置嵌入问号 (?) 字符,在 SQL 语句中包含一个或多个参数标记。

标记仅在 SQL 语句的某些位置合法。例如,它们允许在 INSERT 语句的 VALUES() 列表中(指定行的列值),或在 WHERE 子句中与列的比较中指定比较值。但是,它们不允许标识符(例如表或列名),或指定二元运算符(例如 = 等号)的两个操作数。后者的限制是必要的,因为确定参数类型将是不可能的。通常,参数仅在数据操作语言 (DML) 语句中合法,而不在数据定义语言 (DDL) 语句中合法。

参数标记必须使用 mysql_stmt_bind_param()mysql_stmt_bind_named_param() 绑定到应用程序变量,然后再执行语句。

对预处理语句所引用的表或视图的元数据更改会被检测到,并在下次执行语句时自动重新准备该语句。有关更多信息,请参阅 预处理语句和存储程序的缓存

返回值

成功返回零。如果发生错误,则返回非零值。

错误

如果准备操作不成功(即,mysql_stmt_prepare() 返回非零值),则可以通过调用 mysql_stmt_error() 获取错误消息。

示例

请参阅 第 6.4.11 节,“mysql_stmt_execute()” 中的示例。