Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Sisipkan/perbarui fungsi pembantu menggunakan PDO

Saya biasanya memiliki kelas yang memperluas PDO, tetapi kelas saya cukup khusus. Jika saya membersihkannya dan mengujinya, saya akan mempostingnya di lain waktu. Namun, inilah solusi untuk sistem Anda.

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);  

Ini mungkin tidak sempurna dan bisa menggunakan tweaking. Ini memperhitungkan bahwa $dbh diatur dengan Koneksi PDO. Menunggu masalah sintaks kecil yang saya buat, itu akan berhasil.

EDIT

Sungguh, saya pikir saya akan memilih Doctrine ORM (atau ORM lain). Saat Anda menyiapkan model dan menambahkan semua validasi di sana, maka itu sesederhana:

$table = new Table();
$table->fromArray($_POST);
$table->save();

Itu harus mengisi konten dengan mudah. Ini tentu saja dengan ORM, seperti Doctrine.

DIPERBARUI

Melakukan beberapa perubahan kecil pada kode pertama, seperti meletakkan isset kembali dan menggunakan rtrim di atas substr . Akan bekerja untuk menyediakan tiruan kelas Ekstensi PDO hanya harus mengatur tata letak cara melakukannya dan melakukan beberapa pengujian unit untuk memastikannya berfungsi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah saya Menggunakan Penggabungan Koneksi JDBC?

  2. Apakah ada yang salah dengan join yang tidak menggunakan kata kunci JOIN di SQL atau MySQL?

  3. MySQL – Dapatkan Biaya Permintaan Terakhir Menggunakan SHOW STATUS LIKE 'Last_Query_Cost'

  4. Mysql:Atur format DATETIME ke 'DD-MM-YYYY HH:MM:SS' saat membuat tabel

  5. Koneksi MySQL melalui terowongan SSH - bagaimana cara menentukan server MySQL lainnya?