首页 > 解决方案 > 无法检测 where 子句中的整数值

问题描述

我正在尝试使用 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"

标签: mysqlcdatabase

解决方案


$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))


推荐阅读