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

kueri PDO singkatan

Jadi, Anda mendapatkan jawaban untuk pertanyaan "Mengapa saya mendapatkan kesalahan ini", tetapi tidak mendapatkan jawaban untuk "kueri PDO singkatan".

Untuk ini kita memerlukan sesuatu yang disebut "pemrograman".

Satu hal yang menarik tentang pemrograman adalah kita tidak terbatas pada alat yang ada, seperti dengan profesi lain. Dengan pemrograman, kita selalu dapat membuat alat kita sendiri, dan kemudian mulai menggunakannya alih-alih seluruh rangkaian alat lama.

Dan Pemrograman Berorientasi Objek sangat baik dalam hal itu, karena kita dapat mengambil objek yang ada dan hanya menambahkan beberapa fungsionalitas, membiarkan sisanya apa adanya.

Misalnya, bayangkan kita menginginkan cara singkat untuk menjalankan kueri yang disiapkan di PDO. Yang kita butuhkan hanyalah memperpanjang objek PDO dengan metode singkatan baru. Bagian tersulit adalah memberi nama metode baru.

Selebihnya sederhana:Anda hanya perlu beberapa baris kode

class MyPDO extends PDO
{
    public function run($sql, $bind = NULL)
    {
        $stmt = $this->prepare($sql);
        $stmt->execute($bind);
        return $stmt;
    }
}

Ini semua kode Anda butuhkan. Anda dapat menyimpannya di file yang sama tempat Anda menyimpan kredensial database Anda. Perhatikan bahwa tambahan ini tidak akan memengaruhi kode Anda yang ada dengan cara apa pun - tetap sama persis dan Anda dapat terus menggunakan semua fungsi PDO yang ada seperti biasa.

Sekarang Anda hanya perlu mengubah 2 huruf di konstruktor PDO, menyebutnya sebagai

$conn = new MyPDO(...the rest is exactly the same...);

Dan segera Anda dapat mulai menggunakan alat baru Anda yang mengkilap:

$sql = "SELECT * FROM myTable WHERE id = :id";
$result = $conn->run($sql, ['id' => $id])->fetchAll(PDO::FETCH_ASSOC);

Atau, berikan sedikit pengoptimalan,

$result = $conn->run("SELECT * FROM myTable WHERE id = ?", [$id])->fetchAll();

karena Anda selalu dapat mengatur mode pengambilan default sekali untuk semua, dan hanya untuk satu variabel tidak ada gunanya untuk placeholder bernama. Yang membuat kode ini menjadi singkatan yang sebenarnya dibandingkan dengan jawaban yang diterima,

$stmt_test = $conn->prepare("SELECT * FROM status WHERE status_id = ?");
$stmt_test->execute([$id]);
$result = $stmt_test->fetchAll(PDO::FETCH_ASSOC);

dan bahkan untuk jawaban terbaik yang Anda dapatkan sejauh ini,

$result = $conn->prepare("SELECT * FROM status WHERE status_id = ?");
$result->execute([$id]);

belum lagi yang terakhir tidak selalu dapat digunakan, karena hanya cocok untuk mendapatkan array. Sementara dengan nyata singkatan format hasil apa pun dimungkinkan:

$result = $conn->run($sql, [$id])->fetchAll(); // array
$result = $conn->run($sql, [$id])->fetch(); // single row
$result = $conn->run($sql, [$id])->fetchColumn(); // single value
$result = $conn->run($sql, [$id])->fetchAll(PDO::FETCH_*); // dozens of different formats


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Array Kueri Meta WordPress

  2. Penanganan NULL di MySQL Setelah Pemicu Pembaruan yang Diaktifkan Hanya pada Perubahan Data

  3. Periksa apakah ada baris, Laravel

  4. Perbarui kueri di Yii

  5. Bagaimana cara menghubungkan database MySql dengan Firebase?