Не работает функция запроса с параметром
Здраствуйте! Пишу функцию которая будет выполнять запрос к базе но с параметром, не пойму почему то выбивает ошибку.
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)"