$_POST['data']
包含一个id
和其他字段,这些字段需要与这个id
一起插入到DB行中。
在这段代码中有没有办法避免冗余:
$data = json_decode($_POST['data'], true);
$db = new PDO('sqlite:data.db');
$stmt = $db->prepare("UPDATE test SET a=?, b=?, c=?, d=?, e=?, f=? WHERE id=?");
$stmt->execute(array($data['a'], $data['b'], $data['c'], $data['d'], $data['e'], $data['f'], $data['id']));
如何避免重复列名a
,…,f
两次,一次在预处理语句中,一次在数组中?
我们可以完全避免硬编码列名称a
,…,f
,只是从$data
数组键中推断它们?
您可以通过使用命名占位符而不是?
来使它更容易一些。然后你可以把$data
作为参数传递给execute()
$stmt = $db->prepare("UPDATE test SET a=:a, b=:b, c=B, d=:d, e=:e, f=:f WHERE id=:id");
$stmt->execute($data);
这只是将冗余从execute()
参数移动到占位符。但是它不那么啰嗦。