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

Pernyataan PDO saya tidak berfungsi

Terkadang kode PDO Anda menghasilkan kesalahan seperti Call to a member function execute() atau serupa. Atau bahkan tanpa kesalahan apa pun tetapi kueri tidak berfungsi sama. Artinya, kueri Anda gagal dijalankan.

Setiap kali kueri gagal, MySQL memiliki pesan kesalahan yang menjelaskan alasannya . Sayangnya, secara default kesalahan tersebut tidak ditransfer ke PHP, dan semua yang Anda miliki adalah diam atau pesan kesalahan samar yang disebutkan di atas. Oleh karena itu sangat penting untuk mengkonfigurasi PHP dan PDO untuk melaporkan kesalahan MySQL Anda. Dan begitu Anda mendapatkan pesan kesalahan, tidak ada salahnya untuk memperbaiki masalah tersebut.

Untuk mendapatkan informasi mendetail tentang masalah, letakkan baris berikut di kode Anda tepat setelah terhubung

$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

(di mana $dbh adalah nama variabel instans PDO Anda) atau - lebih baik - tambahkan parameter ini sebagai opsi koneksi . Setelah itu semua kesalahan basis data akan diterjemahkan ke dalam pengecualian PDO yang, jika dibiarkan, akan bertindak seperti kesalahan PHP biasa.

Ada kemungkinan yang sangat kecil bahwa jika terjadi kesalahan tertentu, pengecualian tidak akan dilemparkan. Jika query() . Anda /prepare() atau execute() panggilan mengembalikan false tapi tidak ada pengecualian, periksa PDO::errorInfo() seperti ini,

 trigger_error("PDO errorInfo: ".$dbh->errorInfo());

Setelah mendapatkan pesan kesalahan, Anda harus membaca dan memahaminya. Kedengarannya terlalu jelas, tetapi pelajar sering mengabaikan makna dari pesan kesalahan. Namun sebagian besar waktu itu menjelaskan masalahnya dengan cukup mudah:

  • Katakanlah, jika dikatakan bahwa tabel tertentu tidak ada, Anda harus memeriksa ejaan, kesalahan ketik, huruf besar-kecil. Anda juga harus memastikan bahwa skrip PHP Anda terhubung ke database yang benar
  • Atau, jika dikatakan ada kesalahan dalam sintaks SQL, maka Anda harus memeriksa SQL Anda. Dan titik masalahnya tepat sebelum bagian kueri yang dikutip dalam pesan kesalahan.

Anda juga harus percaya pesan kesalahan. Jika dikatakan bahwa jumlah token tidak sesuai dengan jumlah variabel terikat maka adalah jadi. Hal yang sama berlaku untuk tabel atau kolom yang tidak ada. Diberi pilihan, apakah itu kesalahan Anda sendiri atau pesan kesalahan yang salah, selalu berpegang pada yang pertama. Sekali lagi kedengarannya merendahkan, tetapi ratusan pertanyaan di situs ini membuktikan bahwa saran ini sangat berguna.

Perhatikan bahwa untuk melihat kesalahan PDO, Anda harus dapat melihat kesalahan PHP secara umum. Untuk melakukannya, Anda harus mengkonfigurasi PHP tergantung pada lingkungan situs:

  • dalam pengembangan server ini sangat berguna untuk memiliki kesalahan tepat di layar, yang menampilkan kesalahan harus diaktifkan:

    error_reporting(E_ALL);
    ini_set('display_errors',1);
    
  • saat langsung situs, semua kesalahan harus dicatat, tetapi tidak pernah ditampilkan kepada klien. Untuk ini, konfigurasikan PHP dengan cara ini:

    error_reporting(E_ALL);
    ini_set('display_errors', 0);
    ini_set('log_errors', 1);
    

Perhatikan bahwa error_reporting harus disetel ke E_ALL sepanjang waktu.

Perhatikan juga bahwa terlepas dari khayalan umum, tidak ada try-catch yang harus digunakan untuk pelaporan kesalahan . PHP akan melaporkan kesalahan PDO Anda, dan dengan cara yang lebih baik. Pengecualian yang tidak tertangkap sangat baik untuk pengembangan, namun jika Anda ingin menampilkan halaman kesalahan yang disesuaikan, tetap jangan gunakan coba tangkap untuk ini, tetapi cukup setel penangan kesalahan khusus . Singkatnya, Anda tidak harus memperlakukan kesalahan PDO sebagai sesuatu yang istimewa tetapi menganggapnya sebagai kesalahan lain dalam kode Anda.

P.S.
Kadang tidak ada error tapi juga tidak ada hasil. Artinya, tidak ada data yang sesuai dengan kriteria Anda . Jadi Anda harus mengakui fakta ini, bahkan jika Anda bisa bersumpah data dan kriterianya baik-baik saja. Mereka tidak. Anda harus memeriksanya lagi. Saya punya jawaban singkat yang akan membantu Anda menunjukkan masalah pencocokan, Mengalami masalah dengan baris yang cocok dalam database menggunakan PDO . Cukup ikuti instruksi ini, dan tutorial tertaut selangkah demi selangkah dan selesaikan masalah Anda atau memiliki pertanyaan yang dapat dijawab untuk Stack Overflow.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah string menjadi tanggal di MySQL?

  2. Cara Mendapatkan Catatan Terakhir Di Setiap Grup Di MySQL

  3. Cara Menonaktifkan Pemeriksaan Kunci Asing di MySQL

  4. CURRENT_DATE/CURDATE() tidak berfungsi sebagai nilai DATE default

  5. Perintah PHP Tidak Sinkron kesalahan