Dalam pembangunan web, PHP digunakan secara meluas sebagai bahasa skrip yang sangat popular. Walau bagaimanapun, dalam pembangunan sebenar, ramai pembangun akan menghadapi masalah "PHP tidak boleh menanyakan data". Keadaan ini mungkin berlaku dalam banyak aspek seperti pertanyaan pangkalan data, pembacaan fail, permintaan rangkaian, dll., yang membawa banyak masalah kepada pembangun. Artikel ini akan meneroka masalah ini dari beberapa aspek dan menyediakan penyelesaian yang sepadan.
1. Isu pertanyaan pangkalan data
Menggunakan PHP untuk menanya pangkalan data adalah salah satu operasi biasa dalam pembangunan web Namun, apabila PHP tidak boleh menanyakan data, bagaimanakah kita harus menyelesaikannya?
Sebelum melaksanakan pertanyaan pangkalan data, kita perlu menyambung ke pangkalan data terlebih dahulu. Oleh itu, kita perlu menyemak sama ada sambungan pangkalan data adalah normal. Anda boleh menyemak dengan kod berikut:
$conn = mysqli_connect($host, $user, $password, $database); if (!$conn) { die('Could not connect: ' . mysqli_error()); }
Jika anda tidak dapat menyambung, anda harus menyemak sama ada alamat hos, nama pengguna, kata laluan, nama pangkalan data dan parameter lain adalah betul.
Pernyataan SQL ialah teras pertanyaan pangkalan data. Jika pernyataan SQL tidak betul, hasil pertanyaan pasti akan kosong. Oleh itu, kita perlu menyemak penyataan SQL dengan teliti untuk memastikan bahawa sintaks adalah betul dan syarat pertanyaan adalah betul. Contohnya:
SELECT * FROM users WHERE id = 1;
Jika pernyataan SQL di atas salah, anda boleh mempertimbangkan untuk menggunakan editor SQL untuk menyemaknya. Editor SQL yang biasa digunakan termasuk phpMyAdmin, Navicat, dll.
Kadangkala hasil pertanyaan tidak kosong, tetapi terdapat beberapa masalah. Pada masa ini, kita perlu menyemak sama ada hasil pertanyaan adalah sah. Sebagai contoh, hasil pertanyaan mungkin tatasusunan kosong, yang bermaksud tiada data ditemui. Kita boleh menilai dengan kod berikut:
$rows = mysqli_fetch_all($result, MYSQLI_ASSOC); if (empty($rows)) { echo 'No data found.'; }
Jika hasil pertanyaan bukan tatasusunan kosong, kami perlu menyemak lebih lanjut sama ada terdapat masalah dengan medan lain, seperti jenis data, format data, dsb.
2. Isu membaca fail
Dalam PHP, kita boleh menggunakan fungsi membaca dan menulis fail untuk membaca dan menulis fail tempatan. Tetapi apabila PHP tidak dapat membaca fail, bagaimana kita menyelesaikannya?
Kadangkala kami akan membaca beberapa fail yang memerlukan kebenaran dalam PHP, seperti gambar peribadi, dan kebenaran yang tidak mencukupi akan menyebabkan PHP tidak dapat membaca fail . Oleh itu, kita perlu menyemak kebenaran fail dan mengubah suai kebenaran fail dengan sewajarnya. Ia boleh diubah suai melalui arahan berikut:
chmod 644 filename
Antaranya, 6 mewakili kebenaran baca dan tulis pengguna, 4 mewakili kebenaran baca kumpulan dan 4 mewakili kebenaran baca yang lain. Selepas pengubahsuaian ini, PHP boleh membaca fail seperti biasa.
Apabila PHP membaca fail, laluan fail juga memerlukan perhatian. Kita perlu memastikan laluan fail adalah betul, jika tidak PHP tidak dapat mencari fail yang sepadan. Anda boleh menyemak sama ada fail itu wujud melalui kod berikut:
if (!file_exists('/path/to/file')) { echo "File not found."; }
Jika laluan fail tidak betul, anda boleh mencari fail melalui laluan mutlak atau laluan relatif:
// 绝对路径 $file_path = '/var/www/html/project/file.txt'; $file_content = file_get_contents($file_path); // 相对路径 $file_path = './file.txt'; $file_content = file_get_contents($file_path);
3. Isu permintaan rangkaian
Dalam pembangunan web, kita selalunya perlu menggunakan PHP untuk menghantar permintaan HTTP atau menerima respons HTTP untuk berinteraksi dengan perkhidmatan jauh. Walau bagaimanapun, apabila PHP tidak boleh menghantar atau menerima data, bagaimanakah kita menyelesaikannya?
Apabila PHP tidak boleh menghantar permintaan HTTP atau menerima respons HTTP, kami harus menyemak dahulu sama ada sambungan rangkaian adalah normal. Anda boleh menyemak status sambungan rangkaian melalui kod berikut:
$fp = fsockopen("www.example.org", 80, $errno, $errstr, 30); if (!$fp) { echo "Unable to connect to the network."; }
Jika sambungan rangkaian tidak normal, anda boleh menyemak alamat hos, port, tembok api dan tetapan lain untuk memastikan sambungan rangkaian yang lancar.
Apabila permintaan yang dihantar oleh PHP atau respons yang diterima mematuhi format protokol HTTP, PHP boleh memprosesnya seperti biasa. Oleh itu, kita perlu menyemak sama ada pengepala permintaan, pengepala respons, isi permintaan, badan respons dan kandungan lain mematuhi keperluan format protokol HTTP. Anda boleh menyemak sama ada pengepala respons mematuhi protokol HTTP melalui kod berikut:
if (!preg_match('/HTTP\/\d\.\d \d+/', $header)) { echo "Invalid HTTP response format."; }
Jika pengepala respons tidak mematuhi protokol HTTP, anda boleh mempertimbangkan untuk menggunakan perpustakaan klien HTTP, seperti Guzzle , Permintaan, dsb.
Ringkasnya, apabila PHP tidak dapat menanyakan data, kami perlu menyemak sambungan pangkalan data, pernyataan SQL, hasil pertanyaan, dll. untuk memastikan logiknya betul apabila PHP tidak dapat membaca fail, kami perlu menyemak Kebenaran fail, laluan fail dan isu lain apabila PHP tidak boleh menghantar atau menerima permintaan HTTP, kami perlu menyemak sambungan rangkaian, format protokol dan isu lain. Hanya dengan menyelesaikan masalah secara berterusan kualiti dan kestabilan kod PHP boleh dijamin.
Atas ialah kandungan terperinci Bincangkan masalah bahawa PHP tidak boleh menanyakan data dari pelbagai aspek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!