[請益] PDO 使用sql語法問題??

看板PHP作者 (優質的藍色射手)時間13年前 (2013/01/13 15:43), 編輯推噓1(1021)
留言22則, 6人參與, 最新討論串1/1
Dear All: 我最近試著使用PDO方試來處理資料庫,連線、下命令都沒有什麼問題, 不過有個問題想要請問 sql=select * from table where id=1 or id=2..... 之前的做法會用php把語法串起來 sql='select * from table where'; for($i=1;$i<2;$i++) { sql.=' id=$i or'; } 得到的應該會是 sql='select * from table where id=1 or id=2 or '; 再用substr把or拿掉 不知道各位在使用PDO的時候,會怎樣處理sql語法 $sth = $dbh->prepare('SELECT * FROM table where id=:id ') $sth->bindParam(':id',$sn); $sth->execute(); 這是在使用 PDO中會用到的方法,這種寫法,我要如何去串我要下的命令呢 還是用迴圈一筆一筆找? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.136.126.162

01/13 18:22, , 1F
WHERE id IN (1,2) 這種語法?
01/13 18:22, 1F

01/13 23:11, , 2F
你的SQL適用PDO->query; 不過如上所說, 改用IN()比較好
01/13 23:11, 2F

01/14 10:25, , 3F
先把要搜尋的全部ID用迴圈存成陣列
01/14 10:25, 3F

01/14 10:26, , 4F
SELECT * FROM TABLE
01/14 10:26, 4F

01/14 10:27, , 5F
WHERE ID IN ( implode(',',$IdArray) )
01/14 10:27, 5F

01/14 10:27, , 6F
'select * from table where id in('.
01/14 10:27, 6F

01/14 10:28, , 7F
implode(',',$IdArray).')'
01/14 10:28, 7F

01/14 10:28, , 8F
我會用上面兩行這樣做拉,不知道有沒有更好的作法
01/14 10:28, 8F

01/14 20:50, , 9F
其實我好奇的是$sth->bindParam(':id',$sn)這一段,因
01/14 20:50, 9F

01/14 20:51, , 10F
為可以做字串的判斷,所以才想說問這個問題!
01/14 20:51, 10F

01/16 21:33, , 11F
以你的情境用 IN 就好,IN也是可以用BINDPARAM的,依
01/16 21:33, 11F

01/16 21:33, , 12F
照二元數搜尋,用OR會比較慢也沒效率
01/16 21:33, 12F

01/17 08:35, , 13F
個人是覺得這種情況 UNION >> IN >= OR
01/17 08:35, 13F

01/21 16:43, , 14F
因為我之前都沒有用pdo,因為以前sql都是自己組成要的
01/21 16:43, 14F

01/21 16:45, , 15F
成,而看到pdo中可以用bindParam的方式做字元判斷,所
01/21 16:45, 15F

01/21 16:47, , 16F
看到prepare('SELECT * FROM table where id=:id ')寫
01/21 16:47, 16F

01/21 16:47, , 17F
法,想說如果要一次查尋多筆的時候,我要怎麼下命令
01/21 16:47, 17F

01/21 16:48, , 18F
用舊法式可以用 select * from table where id in(1,3
01/21 16:48, 18F

01/21 16:49, , 19F
) 或是 select * from table where id='x' or id='y'
01/21 16:49, 19F

01/21 16:50, , 20F
無論數字或字串,我都可以一次多筆,在PDO中我想要用
01/21 16:50, 20F

01/21 16:51, , 21F
bindPArtam來做字元判斷,只是說不知道一次要怎麼下多
01/21 16:51, 21F

01/21 16:53, , 22F
筆,因為寫 id=:id,這樣子,我要如何去改程式呢?
01/21 16:53, 22F
文章代碼(AID): #1GycMidt (PHP)
文章代碼(AID): #1GycMidt (PHP)