27.7.10.21 mysql_stmt_prepare()

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

Description

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

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

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

在执行语句之前,必须使用mysql_stmt_bind_param()将参数标记绑定到应用程序变量。

检测到已准备好的语句所引用的 table 或视图的元数据更改,并在下一次执行该语句时导致该语句的自动重新准备。有关更多信息,请参见第 8.10.4 节“准备好的语句和存储程序的缓存”

Return Values

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

Errors

命令执行 Sequences 不正确。

记不清。

MySQL 服务器已经消失了。

查询期间与服务器的连接丢失

出现未知错误。

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

Example

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