我正在阅读这个答案: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) 背后的逻辑。 '?'
最佳答案
这是因为 str_repeat() 函数将字符串重复指定次数,而 count() 函数将返回数组的长度,这意味着它将产生“?,?,?,?,?,”,如果数组长度是 5(假设),看起来没有格式化,这就是为什么 count($in_array)-1 带有 '?'已使用附加内容。
关于php - 使用准备好的语句的 PDO IN 子句的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37713592/