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()获得错误消息。