小编典典

在传递给mysql_query之前有效地转义C中的引号

sql

简而言之,我通常使用sprintf在C中构建一个MySQL查询。

IE

sprintf(sqlcmd,"update foo set dog=\"lab\" where description=\"%s\"",some_desc);
mysql_query(some_conn,sqlcmd);

但是,如果some_desc类似于 Crazy 5“ Dog ,则MySql Server会尖叫,因为它对悬挂的报价感到困惑。

在C中,最好是扫描some_desc以“”替换“”,或者在MySql中有一个函数可以将其包装得更好……即description = string(Crazy
5“ Dog)?

谢谢!


阅读 201

收藏
2021-05-05

共1个答案

小编典典

尽管MySQL具有mysql_real_escape_string()函数,但您可能应该改用准备好的语句,从而可以使用?占位符而不是实参,然后在每次执行该语句之前将它们绑定到实参。

2021-05-05