我正在读这个答案:PHP - Using PDO with IN clause array
它使用代码:
$in_array = array(1, 2, 3);
$in = str_repeat('?,', count($in_array) - 1) . '?';
$sql = "SELECT * FROM my_table WHERE my_value IN ($in)";
$stm = $db->prepare($sql);
$stm->execute($in_array);
$data = $stm->fetchAll();
任何人都可以解释他们使用
的原因 $in = str_repeat('?,', count($in_array) - 1) . '?';
取而代之的是:
$in = str_repeat('?,', count($in_array));
我很困惑,无法弄清尾随- 1) . '?'
答案 0 :(得分:0)
这是因为str_repeat()函数重复一个字符串指定的次数,而count()函数将返回数组的长度,这意味着它将导致"?,?,?,?,? "如果数组长度为5(假设),它看起来格式不正确,为什么要计算($ in_array)-1'?'已经使用了附件。