Tôi thường có một lớp mở rộng PDO, nhưng lớp của tôi khá tùy chỉnh. Nếu tôi dọn dẹp nó và kiểm tra, tôi sẽ đăng nó vào thời gian sau. Tuy nhiên, đây là một giải pháp cho hệ thống của bạn.
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);
Điều này có thể không hoàn hảo và có thể sử dụng tinh chỉnh. Có tính đến $dbh
được thiết lập với Kết nối PDO. Đang chờ xử lý bất kỳ vấn đề cú pháp nhỏ nào mà tôi đã thực hiện, điều đó sẽ hoạt động.
CHỈNH SỬA
Tuy nhiên, thực sự thì tôi nghĩ tôi sẽ chọn Doctrine ORM (hoặc ORM khác). Khi bạn thiết lập mô hình và thêm tất cả các xác thực vào đó, thì nó sẽ đơn giản như sau:
$table = new Table();
$table->fromArray($_POST);
$table->save();
Điều đó sẽ điền các nội dung một cách dễ dàng. Điều này tất nhiên là với ORM, như Doctrine.
ĐÃ CẬP NHẬT
Đã thực hiện một số chỉnh sửa nhỏ đối với mã đầu tiên, chẳng hạn như đặt isset
quay lại và sử dụng rtrim
over substr
. Bắt đầu cung cấp một bản mô phỏng của một lớp Mở rộng PDO chỉ cần bố trí cách thực hiện và thực hiện một số bài kiểm tra đơn vị để đảm bảo nó hoạt động.