Tengo una array con temas y genero atributos para agregar a la consulta y al bind_param :
$arr = explode(',', $theme); $strMarcas = str_repeat('?,', count($arr) - 1) . '?'; $strTipos = str_repeat('s', count($arr));Por ejemplo uso:
WHERE main_cover in ($strMarcas) Y en el bind_param :
$stmt->bind_param($strTipos, ...$arr); Ahora el problema es que necesito pasar otras condiciones al ejemplo WHERE :
WHERE main_cover in ($strMarcas) AND language=? AND active=?Y, no sé cómo pasar las condiciones, ya probé esto:
$stmt->bind_param($strTipos . "si", ...$arr, $language, $active);Y, eso genera este error:
Error fatal: no se puede usar el argumento posicional después de desempaquetar el argumento
¿Puedes hacer algo como esto?
En vez de:
$stmt->bind_param($strTipos . "si", ...$arr, $language, $active);que errores con:
Error fatal: no se puede usar el argumento posicional después de desempaquetar el argumento
¿Puede agregar a la matriz antes de intentar vincularla?
$ar[] = $language; $ar[] = $active; $stmt->bind_param($strTipos . "si", ...$arr);Si eso no funciona, ¿puede crear una matriz temporal recorriendo los valores, luego agregar los últimos 2 y luego vincular la matriz temporal en su lugar?
¿Por qué usar bind_param() en absoluto?
Simplemente pase la matriz para execute()
$stmt->execute($arr);