【轉】MySql資料庫--mysql_real_escape_string()函數

來源:互聯網
上載者:User

標籤:

MySql資料庫--mysql_real_escape_string()函數

unsigned long mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned long length)

注意,mysql必須是有效開放式串連。之所以需要它是因為,轉義功能取決於伺服器使用的字元集。

描述

該函數用於建立可在SQL語句中使用的合法SQL字串。請參見9.1.1節,“字串”。

按照串連的當前字元集,將“from”中的字串編碼為轉義SQL字串。將結果置於“to”中,並添加1個終結用NULL位元組。編碼的字元為NUL (ASCII 0)、‘\\n’、‘\\r’、‘\\’、‘‘’、‘"’、以及Control-Z(請參見9.1節,“文字值”)。(嚴格地講,MySQL僅需要反斜線和引號字元,用於引用轉義查詢中的字串。該函數能引用其他字元,從而使得它們在記錄檔中具有更好的可讀性)。

“from”指向的字串必須是長度位元組“long”。必須為“to”緩衝區分配至少length*2+1位元組。在最壞的情況下,每個字元或許需要使用2個位元組進行編碼,而且還需要終結Null位元組。當mysql_real_escape_string()返回時,“to”的內容是由Null終結的字串。傳回值是編碼字串的長度,不包括終結用Null字元。

如果需要更改串連的字元集,應使用mysql_set_character_set()函數,而不是執行SET NAMES (或SET CHARACTER SET)語句。mysql_set_character_set()的工作方式類似於SET NAMES,但它還能影響mysql_real_escape_string()所使用的字元集,而SET NAMES則不能。

樣本:

char query[1000],*end;

 

end = strmov(query,"INSERT INTO test_table values(");

*end++ = ‘\\‘‘;

end += mysql_real_escape_string(&mysql, end,"What‘s this",11);

*end++ = ‘\\‘‘;

*end++ = ‘,‘;

*end++ = ‘\\‘‘;

end += mysql_real_escape_string(&mysql, end,"binary data: \\0\\r\\n",16);

*end++ = ‘\\‘‘;

*end++ = ‘)‘;

 

if (mysql_real_query(&mysql,query,(unsigned int) (end - query)))

{

   fprintf(stderr, "Failed to insert row, Error: %s\\n",

           mysql_error(&mysql));

}

該樣本中使用的strmov()函數包含在mysqlclient庫中,工作方式與strcpy()類似,但會返回指向第1個參數終結用Null的指標。

傳回值

置於“to”中的值的長度,不包括終結用Null字元。

錯誤

無。

 

【轉】MySql資料庫--mysql_real_escape_string()函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.