简而言之,我通常使用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)?
谢谢!
尽管MySQL具有mysql_real_escape_string()函数,但您可能应该改用准备好的语句,从而可以使用?占位符而不是实参,然后在每次执行该语句之前将它们绑定到实参。