我通常有一个类扩展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,如教义.
更新
对第一个代码进行了一些细微的调整,例如将isset和使用rtrim放在substr上.提供模拟PDO扩展类的工作只需布置方式即可完成,并进行一些单元测试以确保其工作.