Я пытаюсь создать класс для динамического обновления базы данных, но получаю эту ошибку: - PullRequest
0 голосов
/ 04 марта 2019

**

(!) Предупреждение: 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]);(это строка ошибки)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...