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

PDO SQL-state 00000 tapi masih error?

Itu karena $pdo->errorInfo() mengacu pada pernyataan terakhir yang berhasil dieksekusi. Sejak $sql->execute() mengembalikan false, maka itu tidak dapat merujuk ke pernyataan itu (baik ke nol atau ke kueri sebelumnya).

Mengapa $sql->execute() mengembalikan false, saya tidak tahu... apakah ada masalah dengan $params your Anda array atau dengan koneksi database Anda.

Catatan:Manual PHP (http://php.net/manual/en/pdo .errorinfo.php ) tidak mendefinisikan dengan tepat apa yang dimaksud dengan "operasi terakhir pada pegangan basis data", tetapi jika ada masalah dengan parameter pengikatan, kesalahan itu akan terjadi di dalam PDO dan tanpa interaksi apa pun dengan basis data. Aman untuk mengatakan bahwa jika $pdo->execute() mengembalikan true , bahwa $pdo->errorInfo() adalah benar. Jika $pdo->execute() mengembalikan false , perilaku $pdo->errorInfo() tidak secara eksplisit jelas dari dokumentasi. Jika saya mengingat dengan benar dari pengalaman saya, jalankan kembali true , bahkan jika MySQL mengembalikan kesalahan, mengembalikan false jika tidak ada operasi yang dilakukan. Karena dokumentasinya tidak spesifik, mungkin spesifik driver db.

Jawaban ini mencerminkan pengalaman praktis sejak ditulis pada September 2012. Seperti yang telah ditunjukkan oleh pengguna, dokumentasi tidak secara eksplisit menegaskan kembali interpretasi ini. Ini juga mungkin hanya mencerminkan implementasi driver database tertentu, tetapi harus selalu benar bahwa jika $pdo->execute() mengembalikan true , bahwa $pdo->errorInfo() valid.

Anda mungkin juga ingin menyetel PDO::ERRMODE_EXCEPTION dalam urutan koneksi Anda. Penanganan pengecualian membuatnya tidak perlu memeriksa dan menanyakan kesalahan.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hanya data mysqldump

  2. Beberapa tabel bergabung dalam rel

  3. GALAT 1064 (42000):Anda memiliki kesalahan dalam sintaks SQL Anda; Ingin mengonfigurasi kata sandi sebagai root sebagai pengguna

  4. Mungkinkah menggunakan SQL untuk mengurutkan berdasarkan tanggal tetapi meletakkan tanggal nol di belakang set hasil?

  5. Apakah Knex.js mencegah injeksi sql?