[英]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.