[請益] PDO模糊查詢資料

看板PHP作者時間7年前 (2017/12/21 16:22), 7年前編輯推噓0(0011)
留言11則, 2人參與, 7年前最新討論串1/1
小弟菜鳥 不知道如何下標題 我用的是sqlite 我想找尋一筆資料是item2中含有2XXXX4 item2[0]=>2XXXX40_2XXXX41_2XXXX4_2XXXX46_2XXXX5 item2[1]=>2XXXX40_2XXXX41_2XXXX42_2XXXX43_2XXXX44 執行 select * from new where item2 like "%2XXXX4%" 沒問題 可以找到item2[0],但連同item2[1]都跟著出來了 原因應該是2XXXX4% %符號可以接任意字符, 所以不只4 ,41,42,4*都會符合條件 我想到的解決辦法是 select * from new where item2 like "%2XXXX4/_%" escape "/" 讓"_"符號也當做結尾, 這樣只會找到item2[0] 但是這個要套到pdo上面 $sql= "SELECT * FROM New where item2 like ? "; $sql_sub="and item2 like ? "; $sql = $sql . 'ESCAPE "/"'; $sth=$db->prepare($sql); $cp_iterm='%'.2XXXX4.'/_%'; $sth->bindValue($k,$cp_iterm); 是因為防注入的關係" _ "符號一直不能列為條件嗎? 有其他方法可以解決嗎Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.47.164.38 ※ 文章網址: https://www.ptt.cc/bbs/PHP/M.1513844563.A.B74.html ※ 編輯: kiraseedone (114.47.164.38), 12/21/2017 16:23:15

12/21 18:55, 7年前 , 1F
試試改用regexp operator 他行為比較接近一般的regex
12/21 18:55, 1F

12/21 18:55, 7年前 , 2F

12/21 18:56, 7年前 , 3F
12/21 18:56, 3F

12/21 18:58, 7年前 , 4F
以這個要求而言改為where item2 regexp '2XXXX4_'即可
12/21 18:58, 4F
感謝大大 這個剛剛在工具上跑 的確完美沒問題! 但到了PDO上好像不能用QAQ 餵狗後找不到什麼資訊Orz $sql= "SELECT * FROM New where item2 regexp ? "; $cp_iterm=$iterm[$k-1]."_"; $sth->bindParam(1,$cp_iterm); 變成什麼都找不到Orz 我繼續爬文 感謝大大Orz ※ 編輯: kiraseedone (114.47.164.38), 12/21/2017 19:53:47 ※ 編輯: kiraseedone (114.47.164.38), 12/21/2017 20:08:40

12/21 22:13, 7年前 , 5F
來個蠢方法?WHERE item2 LIKE '2XXXX4_%' OR item2
12/21 22:13, 5F

12/21 22:14, 7年前 , 6F
LIKE '%_2XXXX4_%' OR item2 LIKE '%_2XXXX4'
12/21 22:14, 6F
%_2xxx4_% _<-這個符號似乎要配上/ 和ESCAPE "/"轉譯才能查找 但這僅限在工具上面可以使用 如果要套到pdo上面 似乎會出問題((找不到資料)) 比較大的問題是想套在PDO上面 REGEXP有找到資料似乎SQLITE不支援 必須自己寫,找到別人寫的涵式 http://scar.tw/article/2012/09/20/extend-sqlite-to-support-regexp/ 但套用進去配上上面那段似乎沒用Orz ※ 編輯: kiraseedone (114.47.164.38), 12/21/2017 22:21:29

12/22 07:45, 7年前 , 7F
結果還是底線問題?真是神祕 :|
12/22 07:45, 7F

12/22 12:23, 7年前 , 8F
這樣子可執行,不知道是不是你要的
12/22 12:23, 8F

12/22 12:23, 7年前 , 9F

12/22 12:29, 7年前 , 10F
但我是用 mariadb 測試的
12/22 12:29, 10F
看來問題是選的資料庫類型了(?) 用SQLITE這方法好像不行Orz ※ 編輯: kiraseedone (114.47.164.38), 12/23/2017 13:08:55

12/23 14:43, 7年前 , 11F
sqlite很多方面都很原始 :(
12/23 14:43, 11F
文章代碼(AID): #1QEszJjq (PHP)
文章代碼(AID): #1QEszJjq (PHP)