【发布时间】:2018-06-19 14:41:59
【问题描述】:
我正在尝试基于如下所示的关联数组创建动态构造的 UPDATE 语句:
$lastid = $app['database']->dynamicUpdate('table', [
'name' => $name,
'ticket' => $ticket,
], $id);
动态更新函数:
public function dynamicUpdate($table, $parameters, $id)
{
$query = sprintf('UPDATE %s SET (%s) WHERE id = %s', $table, implode(', ', array_keys($parameters).'= :'.array_keys($parameters)), $id);
$statement = $this->pdo->prepare($query);
$statement->execute($parameters);
return $this->pdo->lastInsertId();
}
但是,当我简单地回显 $query 变量时它会返回以下错误(删除了 dynamicUpdate 中的所有其他代码):
警告:implode():传入的参数无效 EditProduct.php 在第 21 行更新表 SET () WHERE id = 10
【问题讨论】:
-
Implode 需要一个数组作为第二个参数,你传递字符串。数组键返回数组你强制数组到字符串转换。
-
您对 implode 的第二个参数应该是一个数组。你有
array_keys($parameters).'= :'.array_keys($parameters)。你不能连接一个数组。
标签: php string associative-array implode