c++ - mysql_num_rows 总是返回 0

标签 c++ mysql

我使用 mysql_num_rows,这个函数总是返回 0

这是我的代码:

#include <mysql/mysql.h>
MYSQL *conn;
MYSQL_RES *res;
MYSQL_ROW row;

conn = mysql_init(NULL);

if (!mysql_real_connect(conn, "", "", "", "", 0, NULL, 0)) {
  fprintf(stderr, "%s\n", mysql_error(conn));
  exit(1);
}

if (mysql_query(conn, "SELECT * FROM TEST"))
{
  printf("MySQL query error : %s\n", mysql_error(conn));
  exit(1);
}

res = mysql_use_result(conn);

printf("Rows: %d\n", mysql_num_rows(res));

while ((row = mysql_fetch_row(res)) != NULL)
    printf("Row1: %s | Row2: %s | Row3: %s \n", row[0], row[1], row[2]);

mysql_free_result(res);
mysql_close(conn);

这是输出

Rows: 0
Row1: 1 | Row2: 127.0.0.1 | Row3: Raspberry
Row1: 2 | Row2: 127.0.0.1 | Row3: Raspberry

MySQL客户端版本:5.5.44

最佳答案

尝试在 while 循环后显示记录数,如下所示

printf("Rows: %d\n", mysql_num_rows(res));

while ((row = mysql_fetch_row(res)) != NULL)
    printf("Row1: %s | Row2: %s | Row3: %s \n", row[0], row[1], row[2]);

printf("Rows: %d\n", mysql_num_rows(res));

根据 documentation ,当您使用 mysql_use_result 时,mysql_num_rows 不会给您正确的数字,直到您处理完记录后。要在需要使用 mysql_store_result 之前获取它。

希望对你有帮助

关于c++ - mysql_num_rows 总是返回 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640766/

相关文章:

php - PHP中的触发错误函数是什么?

php - 如何让我的删除消息功能只显示在用户 friend 页面上留下的用户自己的消息?

php - 使用下拉菜单和文本字段通过 Php 过滤 My sql

c++ - 如何从同一项目中的另一个 VC++ 项目引用一个 VC++ 项目?

c++ - C++ 中的 NaN 为什么?

c++ - boost::函数内存使用情况

c++ - 无法打开文件 'LIBC.lib'

mysql - 共享服务器上mysql套接字的安全性

php - 从 PHP 调用 MySQL 存储过程

c++ - 在 C++ 中同时读取大量文件的最佳方法是什么?