gpt4 book ai didi

mysql - 使用 mysql_query 构造中的变量作为值

转载 作者:行者123 更新时间:2023-11-29 22:25:52 25 4
gpt4 key购买 nike

我需要重新填充 mysql 中表的某些行,并且我正在使用 C API。该表有 2 列,标题为“VARIABLE”和“VALUE”,4 行包含 4 个变量的名称和值。

我可以通过以下代码重新填充任何值,例如 VAR1 的值:

if(mysql_query(conn, "REPLACE INTO TAULA_DADES SET VARIABLE='VAR1',VALOR=3")){
finish_with_error(conn);
}

但是,我不知道如何将 C 变量的值放入字段中,例如:

int a;

最佳答案

这样的东西应该可以工作(未经测试,只是可能方法的一个示例):

MYSQL_STMT *stmt = mysql_stmt_init(conn);

char stmt_text[] = "REPLACE INTO TAULA_DADES SET VARIABLE=?,VALOR=?";

mysql_stmt_prepare(stmt, stmt_text, strlen(stmt_text));

/* Bind the data for the 2 parameters */
MYSQL_BIND bind[2];

memset(bind, 0, sizeof(bind));

/* First parameter */
char var1[16] = "VAR1";
unsigned long var1_len = strlen(var1);

bind[0].buffer_type = MYSQL_TYPE_STRING;
bind[0].buffer = var1;
bind[0].buffer_length = 16;
bind[0].is_null = 0;
bind[0].length = &var1_len;

/* Second parameter */
int a = 123;

bind[1].buffer_type = MYSQL_TYPE_LONG;
bind[1].buffer = (char *)&a;
bind[1].is_null = 0;
bind[1].length = 0;

mysql_stmt_bind_param(stmt, bind);
mysql_stmt_execute(stmt);
mysql_stmt_close(stmt);

在实际程序中,您应该检查每个语句的返回值,添加错误管理代码。

您还可以通过 sprintf 传递变量(例如查看 How to pass variable in mysql_query ),但它会带来更高的安全风险(至少考虑使用 mysql_real_escape_string() 函数来处理用户提供的值)。

更多详细信息:

关于mysql - 使用 mysql_query 构造中的变量作为值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30275870/

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