Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Chèn / cập nhật chức năng trợ giúp bằng PDO

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trong SQL / MySQL, sự khác biệt giữa ON và WHERE trong một câu lệnh nối là gì?

  2. Cân nhắc của DevOps đối với việc triển khai cơ sở dữ liệu sẵn sàng cho sản xuất

  3. Giám sát cơ sở dữ liệu của bạn với MySQL Enterprise Monitor

  4. 7 cách tìm hàng trùng lặp khi bỏ qua khóa chính trong MySQL

  5. Cách ghi chính xác các chuỗi UTF-8 vào MySQL thông qua giao diện JDBC