[C/C++]MySQL中語句擁有 ‘ 符號時該如何insert

posted in: C/C++程式設計, MySQL | 0

我們知道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

Your email address will not be published. Required fields are marked *