Dua masalah TERBESAR dengan kode dan "solusi" Anda:
- Anda memiliki
@
operator di mana-mana. Untuk itu Anda memiliki -1 suara untuk pertanyaan Anda.@
operator adalah kejahatan itu sendiri. TI bertanggung jawab atas halaman kosong yang Anda lihat. - Namun, obat yang Anda pilih memperburuk keadaan. Hal "ATAU mati" ini bukanlah mantra ajaib untuk menyelesaikan masalah pelaporan kesalahan. Dan digunakan secara tidak benar akan menyebabkan kesalahan seperti yang Anda miliki. Yang Anda miliki
1
dalam pesan kesalahan.
Pertama-tama, penyertaan Anda baik-baik saja, jadi, biarkan saja.
Sedangkan untuk mendapatkan error dari mysqli, ikuti petunjuk berikut:
Daripada menambahkan "atau mati" secara acak, Anda memerlukan solusi pelaporan kesalahan yang lebih andal dan bermanfaat.
Jika Anda menggunakan mysqli_query() di seluruh kode aplikasi tanpa merangkumnya ke dalam beberapa kelas pembantu, trigger_error()
adalah cara yang baik untuk meningkatkan kesalahan PHP, karena ini akan memberi tahu Anda juga file dan nomor baris tempat kesalahan terjadi
$res = mysqli_query($mysqli,$query) or trigger_error(mysqli_error($mysqli)."[$query]");
di semua skrip Anda
dan sejak itu Anda akan diberi tahu alasannya, mengapa objek tidak dibuat.(Jika Anda penasaran dengan or
ini sintaks, Saya sudah menjelaskannya di sini
- itu juga menjelaskan mengapa Anda memiliki (1)
dalam pesan kesalahan)
Namun , jika Anda merangkum kueri Anda ke dalam beberapa kelas, file dan baris dari kesalahan pemicu akan sangat tidak berguna karena mereka akan menunjuk ke panggilan itu sendiri, bukan kode aplikasi yang menyebabkan masalah tertentu. Jadi, ketika menjalankan perintah mysqli yang dienkapsulasi, cara lain harus digunakan:
$result = $mysqli->query($sql);
if (!$result) {
throw new Exception($mysqli->error." [$query]");
}
karena Pengecualian akan memberi Anda jejak tumpukan , yang akan mengarahkan Anda ke tempat asal kueri yang salah.
Perhatikan bahwa Anda harus dapat melihat kesalahan PHP secara umum. Di situs langsung Anda harus mengintip log kesalahan, jadi, pengaturannya harus
error_reporting(E_ALL);
ini_set('display_errors',0);
ini_set('log_errors',1);
sementara di server pengembangan lokal tidak apa-apa untuk membuat kesalahan di layar:
error_reporting(E_ALL);
ini_set('display_errors',1);
dan tentu saja Anda tidak boleh menggunakan operator penekan kesalahan (@) di depan pernyataan Anda.