如何给bind_param添加特殊条件?

How to add special condition to bind_param?

我有一个带有主题的 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);

并且,这会产生此错误:

Fatal error: Cannot use positional argument after argument unpacking

你能做这样的事情吗?

而不是:

$stmt->bind_param($strTipos . "si", ...$arr, $language, $active);

哪些错误:

Fatal error: Cannot use positional argument after argument unpacking

能否在尝试绑定之前附加到数组?

$ar[] = $language;
$ar[] = $active;
$stmt->bind_param($strTipos . "si", ...$arr);

如果这不起作用,您可以通过遍历值来创建一个临时数组,然后附加最后 2 个,然后绑定临时数组吗?

为什么要使用 bind_param()

只需将数组传递给execute()

$stmt->execute($arr);