我們知道SQL在字串insert的時候需要 ‘ ‘ 在指定在其中是字串型態
可是如果在要insert的字串之中出現該字元,將會導致原本的insert失敗
此時我們可以用以下的function去將該字串脫逸掉
std::string escapeString(const char *pStr) {
char *tStr = new char[strlen(pStr)*2+1];
mysql_real_escape_string(conn, tStr, pStr, strlen(pStr));
string retStr(tStr);
delete [] tStr;
return retStr;
}
呼叫時:
string es = escapeString("It's a te'st~'測'試");
string SQL = "insert into test(t) values('";
SQL.append(es);
SQL.append("')");
mysql_query(conn, "SET NAMES 'big5'");
if (mysql_query(conn, SQL)==0){
return true;//insert成功
}else{
fprintf(stderr, "Failed to insert row, Error: %s\n", mysql_error(conn));
return false;
}
參考:http://stackoverflow.com/questions/1814269/c-mysql-c-api-mysql-real-escape-string
Leave a Reply