**
(!) Предупреждение: PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов в
**
Я пытаюсь создать класс для динамического обновления базы данных, но получаю эту ошибку: Я пытаюсь понять, потому что параметры действительно совпадают.Ключевой момент: на локальном хосте - я получаю сообщение об ошибке, и код не выполняется, но на живом сервере код выполняется, хотя я все еще получаю 500 внутренних ошибок сервера.Пожалуйста, что я не так делаю?или какая-нибудь лучшая идея?
1.ЭТО МОЙ $ DATA
$ redirectTo = "https://helpme.com";
$data = ['loanamount' => $loanamount,
'term' => $terms,
'interest' => $interest,
'repayment' => $totalrepayment,
'monthly_repayment=?' => $monthlyrepayment,
'id' => $id];
2.ЭТО МОЙ КЛАСС
public function updateMultiple($data, $dbtable, $identifier,
$identifier_ans, $redirectTo)
{try{ $implodeKey = implode('=?, ', array_keys($data));
$implodeKey = rtrim($implodeKey, ', id');
$implodeValue = implode(', ', array_values($data));
$sql = "UPDATE $dbtable SET $implodeKey WHERE $identifier =?";
$stmt = $this->connect()->prepare($sql);
$result = $stmt->execute([$implodeValue]);
if($result){$redirectTo;}}
catch (PDOException $e){echo $e->getMessage(), PHP_EOL;} }
Я исправил это, используя EXPLODE () для преобразования $ implodeValue обратно в массив
public function updateMultiple(array $data, $dbtable, $identifier,
int $identifier_ans)
{$implodeKey = implode('=?, ', array_keys($data));
$implodeKey = rtrim($implodeKey, ', id');
$implodeValue = array_values($data);
$implodeValue = implode(', ', $implodeValue);
$implodeValue = explode(" " , $implodeValue);
$sql = "UPDATE $dbtable SET $implodeKey WHERE $identifier =?";
$stmt = $this->connect()->prepare($sql);
$stmt->execute($implodeValue);
3.УСТАНОВИТЬ И ОСУЩЕСТВИТЬ КЛАСС
$insert_db = new Insert();
$insert_db->updateMultiple($data, 'helpme', 'help', $id, $redirectTo);
$sql(var_dump) = 'UPDATE showal_old SET loanamount=?, term=?, interest=?,
repayment=?, monthly_repayment=? WHERE id =?'
$implodeValue(print_r) `440000, 1, 44000, 484000, 484000, 13964`
ТОГДА Я ПОЛУЧАЮ ЭТУ ОШИБКУ (!) Предупреждение: PDOStatement :: execute (): SQLSTATE [HY093]: недопустимый номер параметра: число связанных переменных не соответствует количеству токенов в C: \ xampp \ htdocs --- $result = $ stmt-> execute ([$ implodeValue]);(это строка ошибки)