6.4.6 mysql_stmt_bind_result()

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 元素的成员以及如何设置它们以接收输出值。

返回值

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

错误

示例

请参阅 第 6.4.12 节,“mysql_stmt_fetch()” 中的示例。