嗯,我想知道是否可以在 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/