php - 使用准备好的语句的 PDO IN 子句的说明

标签 php mysql pdo

我正在阅读这个答案: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/

相关文章:

mysql - "key column doesn' t 存在于表中”

php - 在 php.ini 文件中添加扩展条目后,sqlsrv 驱动程序不会出现在 WAMP 服务器 phphinfo() 上

php - 使用 PHP 将不为空的输入数据插入 MySQL 数据库

php - 在提交用户输入后,如何在 if 语句中提交用户输入

php - 锂框架 : how to obtain controller name in layout

php - 为了使此注册表单发挥作用,我缺少什么?

php - 如何使用 PDO 插入数据库,其中要插入的列发生变化?

javascript - 如何使用 $key 按名称获取元素

php - 排序实体依赖

mysql - 查询顶部条目及其值的列表