看板 PHP 關於我們 聯絡資訊
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
noxhsu:WHERE id IN (1,2) 這種語法? 01/13 18:22
cokellen:你的SQL適用PDO->query; 不過如上所說, 改用IN()比較好 01/13 23:11
rock810:先把要搜尋的全部ID用迴圈存成陣列 01/14 10:25
rock810:SELECT * FROM TABLE 01/14 10:26
rock810:WHERE ID IN ( implode(',',$IdArray) ) 01/14 10:27
rock810:'select * from table where id in('. 01/14 10:27
rock810:implode(',',$IdArray).')' 01/14 10:28
rock810:我會用上面兩行這樣做拉,不知道有沒有更好的作法 01/14 10:28
joedenkidd:其實我好奇的是$sth->bindParam(':id',$sn)這一段,因 01/14 20:50
joedenkidd:為可以做字串的判斷,所以才想說問這個問題! 01/14 20:51
rexmouse4v:以你的情境用 IN 就好,IN也是可以用BINDPARAM的,依 01/16 21:33
rexmouse4v:照二元數搜尋,用OR會比較慢也沒效率 01/16 21:33
shadowjohn:個人是覺得這種情況 UNION >> IN >= OR 01/17 08:35
joedenkidd:因為我之前都沒有用pdo,因為以前sql都是自己組成要的 01/21 16:43
joedenkidd:成,而看到pdo中可以用bindParam的方式做字元判斷,所 01/21 16:45
joedenkidd:看到prepare('SELECT * FROM table where id=:id ')寫 01/21 16:47
joedenkidd:法,想說如果要一次查尋多筆的時候,我要怎麼下命令 01/21 16:47
joedenkidd:用舊法式可以用 select * from table where id in(1,3 01/21 16:48
joedenkidd:) 或是 select * from table where id='x' or id='y' 01/21 16:49
joedenkidd:無論數字或字串,我都可以一次多筆,在PDO中我想要用 01/21 16:50
joedenkidd:bindPArtam來做字元判斷,只是說不知道一次要怎麼下多 01/21 16:51
joedenkidd:筆,因為寫 id=:id,這樣子,我要如何去改程式呢? 01/21 16:53