我的insert语句前面是这样的:
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();
}
现在,我需要返回最后一个插入行的id,因为在这一行之后要使用这个新id执行另一个插入。因此,我将insert语句修改为:
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
]);
我不知道为什么会这样。据我所知,通常在变量绑定没有发生时会发生这种情况。但我没有修改该部分,返回是在语句执行后完成的。所以我很困惑。感谢您的帮助。