Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penyelesaian kepada PHP Ralat maut: Panggilan ke kaedah yang tidak ditentukan PDO::prepare() in

Penyelesaian kepada PHP Ralat maut: Panggilan ke kaedah yang tidak ditentukan PDO::prepare() in

PHPz
PHPzasal
2023-06-22 18:40:401094semak imbas

PHP, sebagai bahasa pembangunan web yang popular, telah digunakan sejak sekian lama. Kelas PDO (Objek Data PHP) yang disepadukan dalam PHP adalah cara biasa untuk kita berinteraksi dengan pangkalan data semasa pembangunan aplikasi web. Walau bagaimanapun, masalah yang sering dihadapi oleh sesetengah pembangun PHP ialah apabila menggunakan kelas PDO untuk berinteraksi dengan pangkalan data, mereka akan menerima ralat sedemikian:

Ralat maut PHP: Panggilan ke kaedah yang tidak ditentukan PDO::prepare( ) dalam

Mesej ralat ini bermakna kami menggunakan kaedah PDO::prepare() tetapi enjin PHP nampaknya tidak dapat mencari kaedah ini. Jadi mengapa ini berlaku? Lebih penting lagi, bagaimana kita harus menyelesaikan masalah ini?

Pertama sekali, kita perlu memahami kelas PDO PHP dan beberapa penggunaan asasnya. PDOException ialah subkelas kelas PDO, digunakan untuk mengendalikan pengecualian yang mungkin berlaku semasa operasi pangkalan data. Apabila kami menghantar permintaan pertanyaan ke pangkalan data MySQL, kami boleh menggunakan kaedah PDO::prepare(). Kaedah ini menghantar pernyataan pertanyaan ke pelayan MySQL Pelayan MySQL menyusun pernyataan pertanyaan ke dalam kod boleh laku dan mengembalikan pernyataan yang disediakan (objek PDOStatement). Kemudian, kita boleh menggunakan pernyataan ini beberapa kali dalam skrip PHP ini untuk melaksanakan operasi pertanyaan yang sama atau berbeza. Sintaks asas kaedah PDO::prepare() adalah seperti berikut:

$stmt = $pdo->prepare($query);

Di sini, $stmt ialah objek PDOStatement , dan $query ialah pernyataan pertanyaan MySQL yang ingin kami laksanakan (gunakan ruang letak tanda soal dan bukannya parameter dan nilai tertentu).

Walau bagaimanapun, dalam beberapa kes, apabila kami cuba menggunakan kaedah PDO::prepare(), ralat "PHP Fatal: Call to undefined method PDO::prepare() in" akan muncul. Berikut ialah gambaran keseluruhan tentang perkara yang mungkin menyebabkan masalah ini dan cara membetulkannya.

  1. Versi PHP sudah lapuk

Pertama, kami perlu memastikan versi PHP kami menyokong PDO. PDO telah diperkenalkan dalam versi PHP 5.1, jadi kita perlu menggunakan sekurang-kurangnya PHP versi 5.1 dan ke atas. Jika kami menggunakan PDO dalam versi PHP yang lebih awal, kami akan mendapat ralat kaedah yang tidak ditentukan.

  1. PDO tidak didayakan dalam fail konfigurasi

Walaupun kami telah menggunakan PHP 5.1 atau lebih baru, kami perlu menentukan sama ada sambungan PDO berada dalam fail konfigurasi PHP php.ini didayakan dalam . Kami hanya boleh menyemak sama ada baris berikut terdapat dalam fail:

extension=pdo.so
extension=pdo_mysql.so

Jika baris ini tidak ada, kami perlu menambah mereka ke fail , dan mulakan semula pelayan web untuk memastikan perubahan berkuat kuasa. Jika anda tidak pasti cara mengedit fail php.ini, anda boleh memasukkan arahan berikut dalam terminal:

sudo vi /etc/php.ini

Kemudian anda boleh membuka php menggunakan fail editor teks vim .ini dan ubah suainya. Selepas menyimpan dan keluar dari fail, anda perlu memulakan semula pelayan web.

  1. Kelas PDO tidak diimport

Sebelum menggunakan PDO dalam skrip PHP kami, kami perlu memastikan bahawa kelas PDO telah diimport. Kita perlu menambah kod berikut pada permulaan skrip PHP:

b3ce88445fdcbdee175fc0065c47c2cf

Di sini, $pdo ialah objek PDO, dan mydb, nama pengguna dan kata laluan ialah butiran yang berkaitan dengan sambungan pangkalan data MySQL. Kami juga boleh menggunakan pilihan PDO seperti ATTR_ERRMODE untuk menetapkan tahap pelaporan ralat PDO.

  1. Menggunakan kelas PDO yang salah

Dalam PHP, terdapat dua cara untuk melaksanakan kelas PDO: PDO dan PDO_MYSQL. Jika kita menggunakan PDO_MYSQL, kita harus menggunakan kaedah PDO_MYSQL::prepare() dan bukannya kaedah PDO::prepare().

Berikut ialah sintaks pertanyaan asas menggunakan kelas PDO_MYSQL:

$stmt = $pdo->prepare($query);

Sila ambil perhatian bahawa $pdo pembolehubah digunakan Objek yang dicipta oleh kelas PDO_MYSQL.

  1. Hilang sambungan MySQL PDO

Akhir sekali, jika skrip PHP kami menggunakan pelayan pangkalan data MySQL, maka kami perlu memastikan sambungan MySQL PDO dipasang pada PHP pelayan . Kita boleh menyemak sama ada sambungan ini dipasang menggunakan arahan berikut:

php -m | grep pdo_mysql

Jika arahan di atas mengeluarkan "pdo_mysql", ini bermakna sambungan pdo_mysql dipasang pada kami pelayan. Jika tidak, kami perlu memasang sambungan ini pada pelayan.

Akhir sekali, kita perlu mendayakan sambungan pdo_mysql dalam fail php.ini. Kami boleh mendayakannya dengan menambah baris berikut dalam fail:

extension=pdo_mysql.so

Ringkasnya, kaedah untuk menyelesaikan ralat Fatal PHP: Panggilan ke kaedah yang tidak ditentukan PDO::prepare( ) bergantung kepada Punca masalah. Atas sebab di atas, terdapat banyak cara untuk menyelesaikan masalah ini. Tidak kira apa keadaannya, kita harus menelitinya dengan teliti dan mencuba beberapa penyelesaian yang mungkin.

Atas ialah kandungan terperinci Penyelesaian kepada PHP Ralat maut: Panggilan ke kaedah yang tidak ditentukan PDO::prepare() in. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn