mysql - 如何在 C 中返回 SELECT COUNT 的值

标签 mysql c

嗯,我想知道是否可以在 printf 中使用计数结果。

我有一个在 mysql 中进行计数的代码。

void count_sql(void) {

    if (SQL_ENTER == SQL_ROWS(mysql, "SELECT COUNT(*) FROM `login_client` WHERE `ID` < DATE(NOW() + INTERVAL 1 DAY)"))
        sqldebug(mysql);

    printf("Counted users\n");
    return;
}

我想通过如下所示的消息返回计数值:

printf("找到150个用户\n");

最佳答案

我找不到类似于 SQL_ENTER 的数据类型,所以我不确定这是否是您代码中的变量,这是我正在查看的文档

26.8.7 C API Function Descriptions 下面我包含了我的 int main 但你应该只能使用 void count_sql,同样值得注意的是我将 MYSQL 对象传递给了函数这也可能是您问题的一部分。

还值得注意的是,我使用 MinGW 编译器和 mysql-connector-c-6.1.9-win32 库在 Windows 环境中构建并测试了这段代码,因此它可能无法在您的环境中运行

#include<winsock2.h>
#include<stdio.h>
#include<mysql.h>

int main(){
    /* initialize MYSQL connection */
    MYSQL *mysql = mysql_init(NULL);

    if(mysql == NULL){
        sqldebug(mysql);
    }

    /* pass credentials here */
    if(mysql_real_connect(mysql, "localhost", "user", "password", "database", 0, NULL, 0) == NULL){
        sqldebug(mysql);
    }

    /* run query and count results */
    count_sql(mysql);

    /*close connection and exit void*/
    mysql_close(mysql);
    exit(0);
}

void sqldebug(MYSQL *mysql)
{
  fprintf(stderr, "%s\n", mysql_error(mysql));
  mysql_close(mysql);
  exit(1);
}

void count_sql(MYSQL *mysql){
    /* run query */
    if(mysql_query(mysql, "SELECT COUNT(*) FROM `login_client` WHERE `ID` < DATE(NOW() + INTERVAL 1 DAY)")){
        sqldebug(mysql);
    }

    /* store the results */
    MYSQL_RES *result = mysql_store_result(mysql);

    if(result == NULL){
        finish_with_error(mysql);
    }

    /* check the result has records ** don't really need this part */
    int num_fields = mysql_num_fields(result);
    if(num_fields<1){
        printf("no fields returned");
        exit(1);
    }

    /* row record */
    MYSQL_ROW row;

    if(row=mysql_fetch_row(result)){
       printf("Counted users %s\n", row[0]);
    }
    return;
}

关于mysql - 如何在 C 中返回 SELECT COUNT 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43125276/

相关文章:

mysql - 如何修复截断的错误日期时间值 : 'Apr 25, 2017 11:48:45 AM' error during insert?

c - K&R 练习 1-19 意外且不一致的输出

mysql - Web 应用程序的文件存储 : Filesystem vs DB vs NoSQL engines

php - 谁能告诉我的 mysql 查询出了什么问题

mysql使用索引的case when语法

php - 返回MYSQL表中所有列字段的名称

c - pthread_create 不接受参数

c - execvpe 隐式声明错误

c++ - 将使用双向 popen() 的 C++ 代码移植到 POSIX 的最佳方法

c - 寻找预处理器命令以删除代码中的命令