Можно ли использовать массив как переменную для корректной записи в таблицу БД, если количество переменных не совпадает с количеством токенов?

What does "Invalid parameter number: number of bound variables does not match number of tokens" mean in the context of the code in /home/c/cn82200/udm/public_html/app/database/db.php on line 164?
Изображение к вопросу
  • 16 сентября 2023 г. 7:06
Ответы на вопрос 2
Ошибка "Invalid parameter number: number of bound variables does not match number of tokens" означает, что количество привязанных переменных в запросе к базе данных не соответствует количеству токенов в запросе. 

В данном контексте, ошибка возникает на линии 164 файла db.php в каталоге /home/c/cn82200/udm/public_html/app/database/. Это указывает на проблему с передачей аргументов в запрос базы данных. 

Массив не может быть просто использован в качестве переменной для корректной записи в таблицу БД, если количество переменных не совпадает с количеством токенов. Вам необходимо корректно подготовить запрос БД и передать правильное количество переменных или токенов в запросе, чтобы избежать этой ошибки.
$i = 0;
$coll = '';
$mask = '';
foreach ($params as $key => $value) {
    if ($i === 0) {
        $coll = $coll . "$key";
        $mask = $mask . "'" . "$value" . "'";
    } else {
        $coll = $coll . ", $key";
        $mask = $mask . ", '" . "$value" . "'";
    }
    $i++;
}

ПЕРЕФОРМУЛИРОВАННЫЕ СОВЕТЫ:

$coll = implode(',', array_keys($params));
$mask = ':' . implode(',:', array_keys($params));
Похожие вопросы