我很想知道是否可以使用PDO将值数组绑定到占位符。这里的用例试图传递一个值数组,用于()中的IN条件
我希望能够做到这样:
<;?php
$ids=数组(1,2,3,7,8,9);
$db=新的PDO(…);
$stmt=$db->;预备(
"选择,*
从桌子上
其中id位于(:an_数组)'
);
$stmt->;bindParam('an_数组',$id);
$stmt->;执行();
?>;
让PDO绑定并引用数组中的所有值
目前我正在做:
<;?php
$ids=数组(1,2,3,7,8,9);
$db=新的PDO(…);
foreach($ids as&;val)
$val=$db->;报价($val)//遍历数组和引号
$in=内爆(“,”,$id)//创建逗号分隔列表
$stmt=$db->;预备(
"选择,*
从桌子上
其中id在(“.$IN.”)中
);
$stmt->;执行();
?>;
这当然可以,但我只是想知道是否有一个内置的解决方案,我错过了
您必须构造查询字符串
<;?php
$ids=数组(1,2,3,7,8,9);
$inQuery=内爆(“,”,数组填充(0,计数($ID),“?”);
$db=新的PDO(…);
$stmt=$db->;预备(
"选择,*
从桌子上
其中id位于(“.$inQuery.”)中
);
//bindvalue是1索引的,所以$k+1
foreach($k=>;$id)
$stmt->;bindValue($k+1),$id);
$stmt->;执行();
?>;
chris(评论)和somebodyisintrouble都建议foreach循环
(…)
//bindvalue是1索引的,所以$k+1
foreach($k=>;$id)
$stmt->;bindValue($k+1),$id);
$stmt->;执行();
。。。可能是冗余的,因此foreach循环和$stmt->;execute可以替换为
<;?php
(...)
$stmt->;执行($id);