在mysql查询中插入字符串作为值
我想在mysql数据库上进行插入,具有as值、一些字符串、字符 这项工作:在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
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就是一个例子: