有一个函数如下://通过用户名获取其它字段
void do_query(const char* name)
{
    char buf[256];
    sprintf(buf, "select * from account where user_name = '%s', name)
    
    //
    // do real query
    //
}
这个SQL语句有被注入的危险,于是我用了mysql_real_escape_string()函数来转义。可是这样以后输入正常的用户名也不行了,比如: 
do_query("mike")产生的SQL就是: select * from account where user_name = \'mike\'MySQL服务器会爆出下面的错误信息:
You have an error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near '\'mike\'' at line 1
这个问题该如何解决呢?
既能用转义来防注入,又能维持正常的运行。