【发布时间】:2022-02-01 02:50:38
【问题描述】:
我有一个带有主题的array,我生成属性以添加到查询和bind_param:
$arr = explode(',', $theme);
$strMarcas = str_repeat('?,', count($arr) - 1) . '?';
$strTipos = str_repeat('s', count($arr));
例如用法:
WHERE main_cover in ($strMarcas)
而在bind_param:
$stmt->bind_param($strTipos, ...$arr);
现在的问题是我需要将其他条件传递给WHERE 示例:
WHERE main_cover in ($strMarcas) AND language=? AND active=?
而且,我不知道如何通过条件,我已经尝试过:
$stmt->bind_param($strTipos . "si", ...$arr, $language, $active);
而且,这会产生这个错误:
致命错误:参数解包后无法使用位置参数
【问题讨论】:
-
以不同的顺序绑定你的参数
-
@TangentiallyPerpendicular 我不明白,我倒着做
-
@TangentiallyPerpendicular 只是如果我以不同的方式执行顺序,我有其他子查询与 where 并且我无法更改顺序。
-
使用 ORM 可以帮助抽象问题,使其更容易解决。但一般这种东西,你应该在查询中动态创建
?,然后动态绑定到它。这样,您可以拥有一个包含键和值的数组,然后动态生成带有问号的 sql 字符串,然后再次循环并一次绑定一个,使其与您的数组结构相匹配。 -
@KevinY 我看到我必须合并数组并增加另一个。