問題描述:
mysql中帶有反斜杠的內容入庫后,發現反斜杠無故失蹤了(俗話說被吃掉了)
例:插入insert into tb('url') values('absc\eeee'); 結果數據庫里的內容是:absceeee(反斜杠沒了呢)
這么詳細了相信大家都搞清楚問題了吧,下面看解決方案。
解決方案:
用addslashes(),mysql_escape_string()等函數進行處理,也就是在插入數據庫前,把內容處理一下
如:$cc = addslashes('absc\eeee'); insert into tb('url') values($cc);
突然發現好了也,有沒有。但是中間到底發生了什么,你是否清楚,接着往下看-》》》
發生了什么:
mysql 在插入數據庫的時候,會自動去除轉義字符也就是反斜杠"\",addslashes(),mysql_escape_string()使用這些函數可以在反斜杠前再加個反斜杠也就是成了 absc\\eeee,在入庫的時候第一個反斜杠被認為是轉義字符,第二個反斜杠被認為是常規內容,所以去除了第一個反斜杠,保留了第二個,看到的結果是反斜杠插進去了。
(轉)