mysql - 无法检测 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"
解决方案
$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))
推荐阅读
- c# - 按大于数据类型大小的值进行位移操作
- typescript - Typescript中嵌套对象的索引类型
- facebook - Facebook for Flutter App 在 IOS 上崩溃,在 Android 上运行良好
- git - prod 上的 .htaccess 文件并在 git 中跟踪,不想在 dev 上使用 prod 的 .htaccess
- django - 从 Django Docker 向 nginx 提供静态文件
- domain-name - 转移时可以使用域名吗
- python - Scrapy/Splash 单击一个按钮,然后在新窗口中从新页面获取内容
- wuapi - WUAPI:列出不同 Windows 版本的更新
- kubernetes - kubernetes.default.svc 是如何路由到 api 服务器的?
- lua - 我需要剪切和混合字符串