gpt4 book ai didi

mysql准备语句: Update query

转载 作者:可可西里 更新时间:2023-11-01 06:38:37 24 4
gpt4 key购买 nike

我正在尝试执行一个 C 程序,使用 mysql C API,通过更新查询连接到 mysql,我没有收到任何编译或链接错误,但数据库表中的行没有得到更新。

当我运行这段代码时,我在 emp 中更新了空值。状态字段

#define STRING_SIZE 256

char* eStatus,myeStatus;

int myempid,empid;


int i;
for(i = 0; i < 5 ; i++){
const char* sqlQuery = "update employee_info set estatus = ? where empID = ?";
if (mysql_stmt_prepare(stmt, sqlQuery, strlen(sqlQuery))) {
fprintf(stderr, " mysql_stmt_prepare(), update failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
return -1;
}

memset(param, 0, sizeof(param)); /* zero the structures */

if (info.state == 2)

eStatus = "present";

else
eStatus = "absent";

empid = i;
// Init param structure
// Select
param[0].buffer_type = MYSQL_TYPE_STRING;
param[0].buffer = (void *) &eStatus;
param[0].buffer_length = STRING_SIZE;
param[0].is_null = 0;
param[0].length = &str_length;

param[1].buffer_type = MYSQL_TYPE_SHORT;
param[1].buffer = (void *) &myempID;
param[1].buffer_length = STRING_SIZE;

param[1].is_null = 0;
param[1].length = 0;

myeStatus = eStatus;
myempid = empid;
if (mysql_stmt_bind_param(stmt, param) != 0) {
fprintf(stderr, " mysql_stmt_bind_param() failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
return -1;
}
/* Execute the statement */
if (mysql_stmt_execute(stmt)) {
fprintf(stderr, " mysql_stmt_execute(), failed\n");
fprintf(stderr, " %s\n", mysql_stmt_error(stmt));
return -1;
}

} // end of for loop

mysql 中的表模式

empid INT(11)

status varchar(10)

我无法弄清楚为什么 mysql 表中的状态没有得到更新。是数据类型不匹配,还是值未正确绑定(bind)到 sqlquery?
有什么线索吗?谢谢。

最佳答案

您可以在这里找到:Writing into mysql database from a single board computer using c关于如何使用 MYSQL C API 执行查询的完整示例,如果您仍然遇到问题,请发布整个代码。

关于mysql准备语句: Update query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12287809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com