Memasukkan Data menggunakan MySQLi
Kod ini nampaknya sedang melaksanakan semua semakan nyahpepijat, tetapi ia gagal memasukkan data baharu ke dalam pangkalan data. Mari kita analisa langkah demi langkah.
Kod cuba menyemak sama ada "nama pengguna" sudah wujud dalam jadual "UserData". Jika tidak, ia cuba menambah baris baharu. Walau bagaimanapun, ia menghadapi isu semasa bahagian sisipan.
Mengenal pasti Isu
Masalahnya terletak pada cara parameter bind diisytiharkan untuk pernyataan sisipan. Daripada menghantar pembolehubah individu berbilang kali (cth., $nama pengguna, $kata laluan dua kali), ia harus dihantar bersama-sama dengan jenis yang sepadan.
Penyelesaian
Fungsi bind_param menjangkakan jenis pembolehubah mendahului pembolehubah itu sendiri. Oleh itu, cara yang betul untuk mengikat parameter ialah:
$stmt2->bind_param('ss', $username, $password);
Sebagai alternatif, jika anda menggunakan PHP 5.6 atau lebih baru, anda boleh memudahkan ini menggunakan operator spread (...):
$data = ['user' => 'someUser', 'password' => 'secret']; $stmt2->bind_param('ss', ...$data);
Setelah parameter diikat dengan betul, sisipan akan berjaya. Ambil perhatian bahawa kod yang disediakan dalam soalan anda mempunyai beberapa ulasan yang berkemungkinan mengelirukan atau tidak diperlukan; mengalih keluarnya untuk kejelasan adalah disyorkan.
Atas ialah kandungan terperinci Mengapa Sisipan MySQLi Saya Gagal Walaupun Lulus Semua Pemeriksaan Nyahpepijat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!