Решение связать 2+ массива в качестве параметров в MySQL подготовленном утверждении? - PullRequest
1 голос
/ 07 апреля 2020

Мне удалось связать 1 массив в качестве параметра без проблем. Тем не менее, я пытаюсь связать массивы 2+ в качестве параметров, и это не так хорошо. Я продолжаю получать сообщение об ошибке, что я не могу использовать позиционные аргументы после распаковки. Как объединить массивы в качестве параметров?

$query="SELECT price FROM products WHERE status='1'";
if(isset($_POST['category'])){
    $category_filter = join(',', array_fill(0, count($_POST['category']), '?'));
    $sql .= ' AND category IN ('.$category_filter.')';
}if(isset($_POST['location'])){
    $location_filter = join(',', array_fill(0, count($_POST['location']), '?'));
    $sql .= ' AND location IN ('.$location_filter.')';
}

$stmt = $conn->prepare($query);
$stmt->bind_param(str_repeat('ss', count($_POST['category'],$_POST['location'])), ...$_POST['category'],...$_POST['location']);
$stmt->execute();
$stmt->bind_result($price);

1 Ответ

0 голосов
/ 07 апреля 2020

Вам придется объединить два списка вместе, а затем связать их в один go ...

$params = array_merge($_POST['category'],$_POST['location']);
$stmt->bind_param(str_repeat('s', count($params)), ...$params);
...