簡體   English   中英

PHP MySQL語句中的特殊字符

[英]Special characters in PHP MySQL statement

我在MySQL數據庫中存儲了一些特殊字符。 特別是®。 我想用這些字符選擇所有條目。 我目前正在使用以下語句:

mysql_query(“ SELECT * FROM table WHERE description LIKE'%®%'或名稱LIKE'%Â%%'”);

它返回0個條目。 當我嘗試使用%a%進行處理時,它會返回很多信息,所以我知道一切正確,這只是某種字符集問題或其他原因。

當我回顯“®”時,它返回“娔。

另外,當我在phpmyadmin中執行完全相同的查詢時,它也可以正常工作。 請幫忙!

閱讀本手冊對您有很大幫助

只需將這些符號添加到您的文本中,然后將其作為SQL查詢執行即可:

INSERT INTO tbl_name VALUES ("Here's my text: ©®");

當您要顯示它時,網站不會對這些符號進行任何操作(但請記住至少要轉義<,>和&(使用htmlspecialchars()),因為它們在XML / SGML(HTML)文檔中具有特殊含義)

PS。 還請記住使用mysql_real_escape_string()對傳遞給SQL查詢的文本進行轉義,以避免任何SQL注入問題。 如果您的服務器啟用了magic_quotes_gpc,則將其禁用,或者至少將GET / POST / COOKIE數據過濾為其原始值。 您應該始終自覺地逃避價值觀。 編輯:

根據您的評論...我不記得默認情況下是否啟用了magic_quotes_gpc,但是您可以輕松撤消魔術引號效果。 在您的PHP代碼的開頭,添加如下內容:

if (get_magic_quotes_gpc()) {
  array_walk_recursive($_GET, 'stripslashes');
  array_walk_recursive($_POST, 'stripslashes');
  array_walk_recursive($_COOKIE, 'stripslashes');
}

現在,每個GPC值都應該始終是原始值-不帶引號-因此您必須在將任何變量傳遞到查詢之前手動對其進行轉義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM