Memasukkan Data menggunakan MySQLi
Apabila cuba memasukkan data menggunakan MySQLi, anda mungkin menghadapi senario di mana kod tidak mengemas kini pangkalan data walaupun ketiadaan ralat semasa penyahpepijatan. Dalam soalan ini, pengguna menghadapi isu ini dengan kod berikut:
$stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)"); $username = /* $_POST["username"] */ "hi"; $password = /* $_POST["password"] */ "hey"; $stmt2->bind_param('s', $username); $stmt2->bind_param('s', $password); $stmt2->execute();
Isu ini berpunca daripada penggunaan bind_param() yang salah. Daripada mengikat setiap pembolehubah secara individu, ia harus dilakukan sekaligus menggunakan sintaks yang betul. Kod yang diperbetulkan ialah:
$stmt2 = $conn->prepare("INSERT INTO UserData (username, password) VALUES (?, ?)"); $username = /* $_POST["username"] */ "hi"; $password = /* $_POST["password"] */ "hey"; $stmt2->bind_param('ss', $username, $password); $stmt2->execute();
Selain itu, menggunakan PHP 5.6 atau lebih baru, operator spread (...) boleh memudahkan sintaks dengan lebih jauh lagi:
$data = ['user' => 'someUser', 'password' => 'secret']; $stmt2->bind_param('ss', ...$data);
Atas ialah kandungan terperinci Mengapa Penyata MySQLi INSERT Saya Tidak Mengemas kini Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!