@eternal_blue

Как исправить ошибку Number of variables doesn't match number of parameters in prepared statement?

Upd: исправил класс обертку, теперь так:
public function prepared_request($request, $param, $types=" ") { //принимает запрос, массив значений, тип значений
        $types = $types ?: str_repeat("s", count($param)); //если тип равен ноль(по умолчанию пустой), то создается строка "sssss..."
        $stmt = $this->$inner_mysqli->prepare($request); //подготовка 
        $stmt->bind_param($types, ...$param); //бинд параметров
        $stmt->execute(); //выполнение
        return $stmt;
    }
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Идея прекрасная, это кстати хороший индикатор: если у тебя не возникает мысли написать подобную функцию - это значит что ты не программист.
Но вот реализация конечно хромает на все восемь ног.

Вот как правильно писать функуцию-хелпер для подготовленных запросов

что у тебя неверно?
1. цикл for - это же ужас. как у тебя пальцы не болят выписывать все эти точечки-запяточечки? неужели не проще написать foreach?
2. bind_param может вызываться только 1 раз
3. функция вообще-то должна что-то возвращать.

Только ни в коем случае не присваивай $stmt переменной класса. Класс для работы с БД обязан быть stateless.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы