作者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