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