参见英文答案 >
Can I bind an array to an IN() condition? 21个
我没有运行循环来更新表中的值,而是想使用IN语句(假设它更快?).
我有一系列值:
$array (
1 => Tom
2 => Bob
3 => Sally's String
4 => Pesce is Italian for "fish"
)
我正在使用循环,因为我可以单独准备每个字符串以解决潜在的不良字符:
$sql = "UPDATE table SET data = 1 WHERE my_string = ?";
$s = pdoObject->prepare($sql);
foreach($array as $string){
$s->execute(array($string));
}
我喜欢使用IN语句(再次,假设它更快,请告诉我,如果我错了).问题是,考虑到我的字符串数组中存在不同类型的字符,创建一个IN语句会导致一些错误.例如;
$inString = '"'.implode('","',$array).'"';
// $inString would be "Tom","Bob","Sally's String","Pesche is Italian for "fish"";
有没有正确的方法来准备这种类型的查询?还是“执行多种”类型的功能?我通常会看到长度为5到50个项目的字符串数组.
######为什么这个问题很独特######