Mengambil dan Menggunakan Last Row ID untuk Sisipan Merentas Jadual dalam PHP
Apabila melakukan berbilang sisipan merentas jadual yang berbeza, ia menjadi perlu untuk mendapatkan semula ID yang dimasukkan terakhir daripada satu jadual untuk digunakan sebagai rujukan dalam sisipan berikutnya. Dalam PHP, menggunakan sambungan mysqli, tugasan ini memerlukan sedikit pemahaman.
Dalam kod yang anda berikan, anda cuba untuk mengikat terus hasil $mysqli->insert_id ke medan imej dalam penyata sisipan table1 anda . Walau bagaimanapun, pendekatan ini tidak betul kerana ID yang dimasukkan terakhir harus diperoleh daripada pernyataan sisipan sebelumnya.
Untuk mendapatkan semula dan menggunakan ID yang dimasukkan terakhir dengan betul, anda mesti terlebih dahulu memastikan bahawa jadual anda mempunyai medan kenaikan automatik, biasanya dinamakan id. Medan ini menjejaki nilai integer yang tersedia seterusnya untuk digunakan sebagai kunci utama bagi rekod baharu.
Setelah anda mempunyai medan penambahan automatik, anda boleh menggunakan fungsi mysqli_insert_id($conn) untuk mendapatkan ID bagi baris terakhir yang disisipkan. Berikut ialah contoh:
$username = 'user1'; $fname = 'John'; $lname = 'Doe'; // Insert into table2 $insert = "INSERT INTO table2 (username) VALUES (?)"; if ($stmt = $mysqli->prepare($insert)) { $stmt->bind_param('s', $username); $stmt->execute(); } // Retrieve last inserted ID for image $last_id = mysqli_insert_id($conn); // Insert into table1 $insert = "INSERT INTO table1 (username, firstname, lastname, image) VALUES (?, ?, ?, $last_id)"; if ($stmt = $mysqli->prepare($insert)) { $stmt->bind_param('sss', $username, $fname, $lname); $stmt->execute(); }
Dalam kod yang diperbetulkan ini, kami mula-mula memasukkan rekod ke dalam jadual2, dan kemudian kami mendapatkan semula ID yang dimasukkan terakhir menggunakan mysqli_insert_id($conn). ID ini kemudiannya digunakan sebagai medan imej dalam pernyataan sisipan berikutnya ke dalam jadual1.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan dan Menggunakan ID Terakhir yang Disisipkan untuk Sisipan Merentas Jadual dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!