[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

dorgon

dorgon

職業:LV3遊戲軟體工程師 為了追尋小時候玩遊戲的感動,而一頭栽入遊戲業界。 本來以撰寫遊戲劇本為主要志向,但回過神來才發現已經踏入程序猿的不歸路。 專長為client端跨平台遊戲開發架構與自動建置流程,主要使用引擎為cocos2d-x與UnrealEngine4。

More Posts - Website

Follow Me:
FacebookLinkedIn

有什麼想法嗎?請發表你的看法