Rumah > pangkalan data > tutorial mysql > Mengapa Saya Mendapat Dua Entri dalam Pangkalan Data MySQL Saya Apabila Saya Hanya Memasukkan Sekali dalam PHP?

Mengapa Saya Mendapat Dua Entri dalam Pangkalan Data MySQL Saya Apabila Saya Hanya Memasukkan Sekali dalam PHP?

DDD
Lepaskan: 2024-12-03 01:49:10
asal
971 orang telah melayarinya

Why Do I Get Two Entries in My MySQL Database When I Only Insert Once in PHP?

Mengapa Memasukkan Sekali dalam PHP Menyebabkan Dua Entri dalam Pangkalan Data MySQL?

Apabila melaksanakan kod PHP yang disediakan pada pelayan, anda mungkin menghadapi isu yang membingungkan apabila memasukkan satu rekod ke dalam pangkalan data MySQL menghasilkan dua entri. Masalah ini, yang nyata apabila kod itu digunakan pada pelayan langsung tetapi tidak pada localhost, telah membingungkan pembangun.

Penyebab di sebalik anomali ini terletak pada gelagat penyemak imbas. Setelah memuat semula halaman, penyemak imbas menghantar dua permintaan kepada pelayan: satu untuk skrip utama dan satu lagi untuk favicon. Dalam situasi ini, pertanyaan sisipan dilaksanakan dua kali, yang membawa kepada pemasukan dua rekod.

Untuk menyelesaikan isu ini, pertanyaan sisipan hendaklah dihadkan kepada satu permintaan sahaja. Dengan melaksanakan semakan bersyarat yang mengesahkan sama ada permintaan itu adalah untuk skrip utama, anda boleh menghalang pertanyaan daripada dilaksanakan untuk permintaan favicon.

Berikut ialah coretan kod diubah suai yang menangani isu ini:

<?php
$db = mysql_connect('localhost', 'zzzzzzz', 'xxxxxx') or die('Unable to connect.' . mysql_error());
mysql_select_db('test', $db) or die(mysql_error($db));

// Check if the request is for the main script
if ($_SERVER['REQUEST_URI'] == '/script.php') {
    $sql = "INSERT INTO test_table(value, insert_time) VALUES ('testing', '" . time() . "')";
    $result = mysql_query($sql);
}

$select = "select * from test_table";
$rs = mysql_query($select);
while ($row = mysql_fetch_array($rs)) {
    echo $row["test_id"] . " -- " . $row["value"] . " -- " . $row["insert_time"] . "<br />";
}
?>
Salin selepas log masuk

Dengan memasukkan semakan bersyarat ini, pertanyaan sisipan hanya dilaksanakan apabila skrip utama diminta, memastikan hanya satu rekod sahaja dimasukkan ke dalam pangkalan data.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Dua Entri dalam Pangkalan Data MySQL Saya Apabila Saya Hanya Memasukkan Sekali dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan