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()” 中的示例。