为什么在 PHP 中插入一次会导致 MySQL 数据库中出现两条记录?
在服务器上执行提供的 PHP 代码时,您可能会遇到一个令人困惑的问题是,将一条记录插入 MySQL 数据库会产生两个条目。当代码部署在实时服务器上而不是本地主机上时,这个问题就会出现,一直困扰着开发人员。
这种异常现象背后的罪魁祸首在于浏览器的行为。刷新页面后,浏览器会向服务器发送两个请求:一个针对主脚本,另一个针对网站图标。在这种情况下,插入查询会执行两次,导致插入两条记录。
要解决此问题,应将插入查询限制为仅对其中一个请求进行。通过实施条件检查来验证该请求是否针对主脚本,您可以防止针对 favicon 请求执行查询。
以下是解决此问题的修改后的代码片段:
<?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 />"; } ?>
通过合并此条件检查,仅在请求主脚本时执行插入查询,确保仅将一条记录插入数据库。
以上是当我在 PHP 中只插入一次时,为什么我的 MySQL 数据库中会得到两个条目?的详细内容。更多信息请关注PHP中文网其他相关文章!