Mysql 无法检测where子句中的整数值

Mysql 无法检测where子句中的整数值,mysql,c,database,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);

我正在尝试使用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++;
   }

$i不会替换i的值。相反,您应该先将字符串的值i replaced格式化,然后在mysql查询中使用该字符串

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

定义MYSQL\u查询\u长度100

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

字符字符串[MYSQL\u QUERY\u LENGTH]={}

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

snprintfstring,MYSQL\u QUERY\u LENGTH,从latest.skills中选择numberofskills,其中id=%d,i

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


如果mysql\u queryconn,字符串

$i将不会替换i的值。相反,您应该先将字符串的值i replaced格式化,然后在mysql查询中使用该字符串

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

定义MYSQL\u查询\u长度100

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

字符字符串[MYSQL\u QUERY\u LENGTH]={}

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

snprintfstring,MYSQL\u QUERY\u LENGTH,从latest.skills中选择numberofskills,其中id=%d,i

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


如果mysql\u queryconn,string

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

下面是一个例子


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

下面是一个例子


设置j=0的有趣地方。你的意思是在while循环之前这样做吗?是的,更正了。设置j=0的有趣地方。你的意思是在while循环之前这样做吗?是的,更正了。
"select numberofskills from latest.skills where id = $i"
"select numberofskills from latest.skills where id = '$i'"
"select numberofskills from latest.skills where id = i"