MySQL Connector/C 插入数据

lfzyx
  • 251

c语言连接mysql数据库用int mysql_query(MYSQL *mysql, const char *stmt_str)函数插入数据.

mysql_query(conn, "INSERT INTO `list` (`ipaddress`) VALUES ('192.168.1.1')")

我想把'192.168.1.1'用变量替代,但是替换成变量名后插入数据库的就是变量名本身,不是变量值。

如何让mysql_query()可以获取变量值?

回复
阅读 5k
2 个回答
arthur_luck
  • 21
✓ 已被采纳
char sql[1024]= "insert into list values(?)";
char value[]= "192.168.1.1";
MYSQL_STMT* stmt ;
MYSQL_BIND  bind[1];
unsigned long val_len ;
// mysql  is  MYSQL* mysql   mysql_init(mysql);
stmt = mysql_stmt_init(mysql);
if(!stmt)
{
    //error
}
if(mysql_stmt_prepare(stmt,sql, strlen(sql)) )
{
    // error
}
// bind value
memset(bind,0,sizeof(bind));
bind[0].buffer_type=MYSQL_TYPE_STRING ;
bind[0].buffer = (char*)value ;
bind[0].length = &val_len ;
bind[0].buffer_length = strlen(value);
bind[0].is_null = 0 ;
bind[0].is_error = 0 ;
val_len = strlen(value);
mysql_stmt_bind_param(stmt,bind);
// execute 
if(mysql_stmt_execute(stmt) )
{
    //error
}
// close mysql_stmt
mysql_stmt_close(stmt) ;

char sql[1024];
sprintf(sql,"INSERT INTO %s xxx VALUES('%s'),'list','localhost');//这里可以把list和localhost换成你的变量

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏