Мой оператор вставки выглядел раньше так:
public function insert($table, $parameters)
{
$query = sprintf('insert into %s (%s) VALUES (%s)', $table, implode(', ', array_keys($parameters)), ':' . implode(', :', array_keys($parameters)));
$statement = $this->pdo->prepare($query);
return $statement->execute();
}
Теперь мне нужно вернуть идентификатор последней вставленной строки, так как у меня есть другая вставка, которая будет выполнена сразу после этой, с использованием этого нового идентификатора.Поэтому я изменил оператор вставки следующим образом:
public function insert($table, $parameters)
{
$query = sprintf('insert into %s (%s) VALUES (%s)', $table, implode(', ', array_keys($parameters)), ':' . implode(', :', array_keys($parameters)));
$statement = $this->pdo->prepare($query);
$statement->execute();
return $this->pdo->lastInsertId();
}
Но при запуске я получаю эту ошибку:
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound
Вот часть вызова функции:
$productid = $app['database']->insert('products', [
'name' => $name,
'address' => $address,
'city' => $city,
'phone' => $phone,
'zip' => $zip,
'customerid' => $customer,
'sno1'=> $serialnumber
]);
Я не уверен, почему это вызвано.Обычно это происходит, когда связывание переменных не происходит, насколько я знаю.Но я не изменил эту часть, и возврат выполняется после выполнения оператора.Так что я в замешательстве.Помощь приветствуется.