[請益] PDO模糊查詢資料
小弟菜鳥 不知道如何下標題
我用的是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
12/21 18:55, 1F
→
12/21 18:55,
7年前
, 2F
12/21 18:55, 2F
→
12/21 18:56,
7年前
, 3F
12/21 18:56, 3F
→
12/21 18:58,
7年前
, 4F
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
12/21 22:13, 5F
→
12/21 22:14,
7年前
, 6F
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:23, 9F
→
12/22 12:29,
7年前
, 10F
12/22 12:29, 10F
看來問題是選的資料庫類型了(?)
用SQLITE這方法好像不行Orz
※ 編輯: kiraseedone (114.47.164.38), 12/23/2017 13:08:55
→
12/23 14:43,
7年前
, 11F
12/23 14:43, 11F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章