在mysql查询中插入字符串作为值

在mysql查询中插入字符串作为值,mysql,c,Mysql,C,我想在mysql数据库上进行插入,具有as值、一些字符串、字符 这项工作: if (mysql_query(con, "INSERT INTO Cars VALUES(2,'Mercedes',57127)")) { finish_with_error(con); } 我怎么能做这样的事 char str[]="Mercedes"; if (mysql_query(con, "INSERT INTO Cars VALUES(2,str,57127)")) { fin

我想在mysql数据库上进行插入,具有as值、一些字符串、字符

这项工作:

if (mysql_query(con, "INSERT INTO Cars VALUES(2,'Mercedes',57127)")) {
      finish_with_error(con);
  }
我怎么能做这样的事

char str[]="Mercedes";
if (mysql_query(con, "INSERT INTO Cars VALUES(2,str,57127)")) {
      finish_with_error(con);
  }
在C中工作时,请尝试以下操作:

char str[] = "Mercedes";

response = mysql_query("INSERT INTO cars (column1,column2,column3) VALUES 2,'str',57127)");

if(response){ finish_with_error(con); }

在将两个“字符串”向下传递到库中之前,需要将它们连接起来

使用预处理器:

#define str "Mercedes"

...

if (mysql_query(con, "INSERT INTO Cars VALUES(2,"str",57127)")) {
  finish_with_error(con);
}
或者在运行时执行此操作:

char str[] = "Mercedes";
char query_template[] = "INSERT INTO Cars VALUES(2,%s,57127)"

char query[sizeof str + sizeof query_template - 3];

sprintf(query, query_template, str);

if (mysql_query(con, query, )) {
  finish_with_error(con);
}
注意:如果外部提供了
str
的内容,则后一种解决方案会带来安全问题。请不要在生产代码中执行此操作。

尝试此操作

int id=1,price=123435;
char name[]="mercedez";
char consulta[1024];

sprintf(consulta,"insert into cars values('%d','%s','%d')",id,name,price);
if(mysql_query(con,consulta)==0)
   fprintf(stdout,"datos insertados con exito\n");

最接近的方法是使用准备好的语句和绑定变量。MySQL不会看到您的C代码,它只会看到发送过来的sql。现在,您将打开自己的大门,将字符串
str
放入数据库,而不是
Mercedes
。C不会替换字符串中的变量。我认为应该在字符串中添加str,因为它仍然不起作用。你不能把
'str'
放在查询中,它不会被
梅赛德斯
替换。我不是提问者,我没有使用任何东西。但我对C非常了解,我知道它不会自动用变量的值替换字符串中的变量名,或者我可以简单地使用一个字符数组并将其他字符连接到它。我对它进行了测试并开始工作,为什么不演示如何使用
mysql\u real\u escape\u string
解决安全问题,因为我缺少mysql API方面的专业知识。请随意添加它@BarmarThis开启了SQLInjection的风险。您应该使用prepared语句Shere就是一个例子: