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

标签 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"

最佳答案

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

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

#define MYSQL_QUERY_LENGTH 100

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

字符字符串[MYSQL_QUERY_LENGTH] = {};

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

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

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

if (mysql_query(conn, string))

关于mysql - 无法检测 where 子句中的整数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55861502/

相关文章:

php - 我应该如何构建我的 rss 提要拉取站点以使站点加载速度更快?

c - 自由结构和堆

sql - 从同一台服务器上另一个数据库的备份创建新数据库?

php - 将多个 MySQL 查询转换为单个查询

mysql - 如何在 ActionScript 3 中替换闭括号和左括号之间的逗号

php - MySQL复杂查询。基于另一个表动态更新行

sql - 实现 n 对 m 关系的正确方法

c - 为什么我的字符没有使用scanf(C语言)扫描

C中int数组和char数组的串联

尝试从数据库中获取数据时出现 java.lang.NullPointerException