PHP 板


LINE

看板 PHP  RSS
$search="\\"; $link=mysql_connect("localhost","xxx","ooo"); mysql_select_db("xxx",$link); $str="select xxx from ooo where xxx like '%$search%'"; $list=mysql_query($str,$link); while(list($xxx)=mysql_fetch_row($list)){ echo $xxx."<br>"; } mysql_close($link); ... 像上面我要查詢欄位xxx中含有反斜線(\)的所有資料並全部提取出來,但是查詢出來的結 果卻是空無一物,但明明xxx欄位有含有反斜線(\)的資料,這是為什麼呢? *從資料表ooo提取欄位xxx所有含「反斜線(\)」的資料,其中MySQL的帳號是xxx、密碼是 ooo、資料庫名稱是xxx --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 219.80.130.92
※ 文章網址: https://webptt.com/m.aspx?n=bbs/PHP/M.1434165464.A.850.html ※ 編輯: banana2014 (219.80.130.92), 06/13/2015 11:18:08
1F:→ MOONRAKER: http://goo.gl/M1UZL6 06/13 12:39
2F:→ MOONRAKER: 寫兩次不夠,你要寫四次,跟Java一樣 06/13 12:40
3F:→ MOONRAKER: 另外(1)mysql_*系列已經作古了。(2)如果還非用mysql_* 06/13 12:41
4F:→ MOONRAKER: 系列,起碼*_real_escape_string()用一下。 06/13 12:42
5F:→ banana2014: TO MOONRAKER:但是我寫四次反斜線它會跑出一些不相關 06/13 12:52
6F:→ banana2014: 的資料出來,而並非所有含有反斜線的資料都會被列出來 06/13 12:53
7F:→ banana2014: 這就是奇怪的一點 06/13 12:54
例如我的資料表有欄位(xxx),其資料如下: +-------------------------------------------+ | xxx | +===========================================+ | Happy % ^_^ | | Hello! \Hello\ | | /\?"' | | ~!@#$%^&*()_+|}{":?><`1234567890-=\][';/.,| | Oh! My God!!! | +-------------------------------------------+ 照理來講應該要列出「Hello! \Hello\」、「/\?"'」、「~!@#$%^&*()_+|}{":?><`1234567890-=\][';/.,」這三筆資料的, 但是它卻只列出「Happy % ^_^」和「~!@#$%^&*()_+|}{":?><`1234567890-=\][';/.,」這兩筆資料, 該列出的它沒列出(只有列出一筆),而不該列出的它卻列出了,這是為什麼呢? ※ 編輯: banana2014 (219.80.128.18), 06/13/2015 13:13:59
8F:→ banana2014: 您給的頁面有人提議用「ESCAPE '|'」的方法來避免這種 06/13 13:16
9F:→ banana2014: 反斜線問題的發生,不過這樣就變成說「|」也有問題了 06/13 13:17
10F:→ banana2014: 這只是把問題移轉給另一個符號而已,並不會把該問題徹 06/13 13:18
11F:→ banana2014: 底解決,所以有無更好的方法能解決這個「MySQL反斜線 06/13 13:20
12F:→ banana2014: 問題」呢? 謝謝 06/13 13:20
13F:→ MOONRAKER: ……我覺得你先加那個mysql_real_escape_string() 06/13 13:25
14F:→ MOONRAKER: 然後再試… 一個\到四個\都試一試… 06/13 13:27
15F:推 wotupset: 會叫出有%的資料 應該是你查詢打錯了 像是:"%\\%%" 06/13 14:40
16F:→ wotupset: 列出的資料都是含有% 06/13 14:40
17F:→ banana2014: 沒有喔 我是打"%\\\\%" 像這樣喔 但是很奇怪的就是我 06/13 14:46
18F:→ banana2014: 不管照你們的方式怎麼打(包括加mysql_real_escape_str 06/13 14:47
19F:→ banana2014: 它依舊跑出一樣的結果 很奇怪 06/13 14:48
<? $search="\\\\"; $link=mysql_connect("localhost","xxx","ooo"); mysql_select_db("xxx",$link); mysql_query("SET NAMES UTF8"); $search=mysql_real_escape_string($search); if($search){ $str="select xxx from ooo where xxx like '%$search%'"; $list=mysql_query($str,$link); while(list($xxx)=mysql_fetch_row($list)){ echo $xxx."<br>"; } } mysql_close($link); ?> 像以上的結果會是什麼都沒有顯示,請問該怎麼解決呢? ※ 編輯: banana2014 (219.80.128.18), 06/13/2015 14:55:00
20F:→ Darkland: "\\\\" 不加 real_escape ,或 "\\" 加 real_escape 06/13 18:40
21F:→ Darkland: 不然就開 client tool 直接去 db 下 query 下到滿意再 06/13 18:42
22F:→ Darkland: 回來看怎麼用 PHP 組出要的 query 阿 06/13 18:42
23F:→ xxxzzz: $search="\\"; => PHP結果 => 字串 \ 06/14 04:47
24F:→ xxxzzz: '%$search%'; => MySQL接收到 '%\%' 06/14 04:47
25F:→ xxxzzz: => 找前面任意字元,且結尾是 % 的資料 => 所以找不到 06/14 04:48
26F:→ xxxzzz: 同理,$search="\\\\"; 傳給MySQL是 '%\\%'; 06/14 04:49
27F:→ xxxzzz: 總之,\ 同時是PHP和MySQL的特殊字元 06/14 04:53
28F:→ banana2014: TO xxxzzz:照理來講$search="\\\\"傳給MySQL的搜尋條 06/14 12:02
29F:→ banana2014: 件是找中間是反斜線、前後是任意字元的資料,但是我輸 06/14 12:04
30F:→ banana2014: 入$search="\\\\"後(在沒有加mysql_real_escape_str時 06/14 12:06
31F:→ banana2014: ),它的搜尋結果竟然跟$search="\\"的結果是一樣的, 06/14 12:07
32F:→ banana2014: 都是那兩筆含有「%」符號的資料,總不可能MySQL是從後 06/14 12:08
33F:→ banana2014: 面讀取字串的吧... 不然怎麼又會把它理解成前面任意字 06/14 12:09
34F:→ banana2014: 元、後面一槓反斜線加「%」的符號呢? (其實這樣也不應 06/14 12:11
35F:→ banana2014: 該顯示出任何結果的,因為根本沒有資料的末端兩字元會 06/14 12:13
36F:→ banana2014: 是一槓反斜線加「%」符號,所以這才是我覺得非常奇怪 06/14 12:14
37F:→ banana2014: 的一點)。 06/14 12:14
38F:→ wotupset: 你跑資料庫是用什麼? 免費空間嗎? 06/14 13:08
39F:→ banana2014: MySQL 租虛擬主機 06/14 15:23
40F:→ banana2014: 不曉得各位試試後有沒有問題 06/14 15:24







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP