bool
mysql_stmt_bind_result(MYSQL_STMT *stmt,
MYSQL_BIND *bind)
mysql_stmt_bind_result()
用于将结果集中的输出列与数据缓冲区和长度缓冲区关联(即绑定)。当调用 mysql_stmt_fetch()
来获取数据时,MySQL 客户端/服务器协议将绑定列的数据放入指定的缓冲区中。
在调用 mysql_stmt_fetch()
之前,必须将所有列绑定到缓冲区。 bind
是一个 MYSQL_BIND
结构体数组的地址。客户端库期望数组包含一个元素,对应结果集的每一列。如果未将列绑定到 MYSQL_BIND
结构体,则 mysql_stmt_fetch()
会忽略数据获取。缓冲区应足够大以容纳数据值,因为协议不会以块的形式返回数据值。
可以在任何时候绑定或重新绑定列,即使结果集已被部分检索。新的绑定将在下次调用 mysql_stmt_fetch()
时生效。假设一个应用程序将结果集中的列绑定在一起并调用 mysql_stmt_fetch()
。客户端/服务器协议将绑定缓冲区中的数据返回。然后,假设应用程序将列绑定到另一组缓冲区。在下次调用 mysql_stmt_fetch()
时,协议会将数据放入新绑定的缓冲区中。
要绑定列,应用程序调用 mysql_stmt_bind_result()
并传递类型、地址和输出缓冲区的长度,该缓冲区用于存储值。 第 6.2 节,“C API 预处理语句数据结构” 描述了每个 MYSQL_BIND
元素的成员以及如何设置它们以接收输出值。
-
转换不受支持。可能是
buffer_type
值无效,或者不是支持的类型之一。 -
内存不足。
-
发生未知错误。
请参阅 第 6.4.12 节,“mysql_stmt_fetch()” 中的示例。