私は通常、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接続でセットアップされます。私が行ったマイナーな構文の問題が発生するまで、それは機能するはずです。
編集
しかし、実際には、Doctrine ORM(または別のORM)に行くと思います。モデルをセットアップし、そこにすべての検証を追加すると、次のように簡単になります。
$table = new Table();
$table->fromArray($_POST);
$table->save();
これで、コンテンツを簡単に入力できるはずです。もちろん、これはDoctrineのようなORMを使用します。
更新
isset
を配置するなど、最初のコードにいくつかの小さな調整を加えました 戻ってrtrim
を使用する substr
以上 。 PDO Extensionクラスのモックアップを提供する作業に取り掛かるには、それを行う方法をレイアウトし、それが機能することを確認するためにいくつかの単体テストを実行する必要があります。