Не работает функция запроса с параметром

Здраствуйте! Пишу функцию которая будет выполнять запрос к базе но с параметром, не пойму почему то выбивает ошибку.

Fatal error: Uncaught ArgumentCountError: mysqli_stmt::execute() expects exactly 0 arguments, 1 given in C:\OpenServer\domains\labs\db.php:38 Stack trace: #0 C:\OpenServer\domains-labs\db.php(38): mysqli_stmt->execute() #1 C:\OpenServer\domains\labs\functions.php(55): DB->executePrepareQuery() #2 C:\OpenServer\domains\labs\index.php(140): functions->getGoodsInCategory() #3 {main} thrown in C:\OpenServer\domains\labs\db.php on line 38

файлы: db.php

function executePrepareQuery($sql, $array_param){
        $data = $this->connection->prepare($sql);
        $data->execute($array_param);
        return $data;
}

function.php

public function getGoodsInCategory($id_category){
$data = $this->db->executePrepareQuery("SELECT good.name, good.description, good.general_number, good.price 
    FROM goods good, category categor 
    WHERE good.id_categories = categor.id_category 
    AND good.id_categories = ?;",[$id_category]);
$goods = null;
while ($current_good = $data->fetch_assoc()) {
$goods[] = $current_good;
}
return $goods;
}

Есть простая функция которая без параметров то рабоет. Если просто отправить готовый SQL запрос.


Ответы (1 шт):

Автор решения: Алексей Шиманский

Судя по документации: https://www.php.net/manual/ru/mysqli-stmt.execute.php#refsect1-mysqli-stmt.execute-changelog

Версия  Описание
8.1.0   Добавлен необязательный параметр params.

То есть если версия PHP ниже 8.1, то надо использовать связку

"prepare" -> "bind_param" -> "execute()" (без параметров)

в ином случаем можно уже просто

"prepare" -> "execute($array)"
→ Ссылка