无法在where子句中检测整数值

时间:2019-04-26 05:50:23

标签: mysql c database

我正在尝试使用C语言中的mysql查询将列值读取到我的数组中。

for(i=1;i<=15;i++)
   {
       if (mysql_query(conn, "select numberofskills from latest.skills where id = $i")) {
        fprintf(stderr, "%s\n", mysql_error(conn));
        exit(1);
    }
    res = mysql_use_result(conn);

     while ((row = mysql_fetch_row(res)) != NULL){
        j=0;
        arr[j].n =atoi(row[0]);
        printf("%d\n",  arr[j].n);
        j++;
   }

我遇到一个错误,说“'where子句'中的未知列'$ i'。 我尝试了所有这些方法,但似乎无济于事。

"select numberofskills from latest.skills where id = $i"
"select numberofskills from latest.skills where id = '$i'"
"select numberofskills from latest.skills where id = i"

2 个答案:

答案 0 :(得分:3)

$ i不会替换i的值。取而代之的是,您应该先格式化字符串,并在其中替换为i值,然后在mysql查询中使用该字符串。

在头文件或程序的开头,定义以下宏:

#define MYSQL_QUERY_LENGTH 100

在执行查询的函数中,定义以下变量:

char string[MYSQL_QUERY_LENGTH] = {};

在for循环中,首先格式化字符串:

snprintf(string, MYSQL_QUERY_LENGTH, "select numberofskills from latest.skills where id = %d", i);

然后,在查询中使用以下字符串:

if (mysql_query(conn, string))

答案 1 :(得分:0)

首先,您需要使用sprintf函数创建查询字符串变量,在其中您可以正确地将查询和变量连接起来

这是示例

mysql and c -- use variable in query