$statement = $db->prepare('SELECT blah FROM blah_table WHERE blahID IN (:a, :b, :c)');
Run Code Online (Sandbox Code Playgroud)
如果在运行时之前参数的数量未知,该怎么办?我唯一能想到的就是构建一个sql字符串,以便根据需要制作尽可能多的参数占位符.
Pay*_*tey 11
并不是真正的hacky,循环是循环可变次数的语言的一部分.
$values = array('val1', 'val2');
$sql = 'SELECT * FROM Table Where column IN(';
$params = array();
foreach ($values as $val)
{
$params[] = '?';
$binds[] = $val;
}
$prep = $db->prepare($sql . join(', ', $params) . ')');
$i = 0;
foreach($binds as $bind){
$prep->bindValue(++$i, $bind);
}
$prep->execute();
Run Code Online (Sandbox Code Playgroud)
遍历您需要绑定的每个值,创建一个绑定对象数组,在附加SQL后循环.
您可以动态构建“IN (...)”字符串:
$in_string = '(';
foreach ( $array_of_parameters as $parameter ) {
$in_string .= ':' . chr($i + 97) . ','; // Get the ASCII character
}
$in_string = substr($in_string, 0, -1) . ')';
$statement = $db->prepare("SELECT blah FROM blah_table WHERE blahID IN ($in_string)");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4295 次 |
| 最近记录: |