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