我通常有一个扩展PDO的类,但是我的类非常定制。如果我将其清理和测试过,将在以后发布。但是,这是您系统的解决方案。
function dbSet($fields, &$values) { $set = ''; $values = array(); foreach ($fields as $field) { if (isset($_POST[$field])) { $set .= "`$field` = ?,"; $values[] = $_POST[$field]; } } return rtrim($set, ',');}$fields = explode(" ","name surname lastname address zip fax phone date");$_POST['date'] = $_POST['y']."-".$_POST['m']."-"$_POST['d'];$query = "UPDATe $table SET ".dbSet($fields, $values).", stamp=NOW() WHERe id=?";$values[] = $id;$dbh->prepare($query);$dbh->execute($values);这可能并不完美,可能需要进行调整。它考虑了
$dbh使用PDO连接进行设置的情况。待我提出的任何次要语法问题,都应该可以。
编辑
确实,我想我会选择教义ORM(或另一个ORM)。当您设置模型并在其中添加所有验证时,它非常简单:
$table = new Table();$table->fromArray($_POST);$table->save();
那应该容易地填充内容。当然,这对于ORM(如Doctrine)而言。
更新
对第一个代码做了一些小的调整,例如
isset放回并使用
rtrimover
substr。要提供一个PDO扩展类的模型的工作,就必须布局该方法并进行一些单元测试以确保它可以工作。



