PHP插入记录到MySQL数据库(多记录被添加)
我有这个代码的问题:PHP插入记录到MySQL数据库(多记录被添加)
<?php
$new_value = 'testing';
$con = mysql_connect("localhost","user","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO myDB (myField) VALUES ('$new_value')");
mysql_close($con);
?>
2个问题正在发生:
月1日 - 2个记录被插入,而不是1
2日 - $ NEW_VALUE没有改变,它是创造多个实例时,我只想要1
我认为这是类似于Wh是东西一样$ NEW_VALUE值在你之后,读您的评论后:
INSERT IGNORE INTO tablename (fields)
VALUES(values);
使用INSERT IGNORE,而不是INSERT。如果一条记录没有复制现有的记录,MySQL会照常插入它。如果记录是重复的,那么IGNORE关键字告诉MySQL放弃它而不会产生错误。
编辑 或者作为维陶塔斯指出;如果你想替换值使用替换INSERT
代替INSERT IGNORE仍然添加两次 – Satch3000 2012-03-30 10:58:39
2日 - $ NEW_VALUE没有改变,它的创建多个实例 用时,我只希望在同一$ NEW_VALUE值1
$ new_value在哪里更改?它是如何改变的?你确定你没有多次按下浏览器刷新按钮吗?
只有1个$ new_value的实例,所以说,$ new_value ='Value1'; ...代码在db表中添加两次,我想避免重复 – Satch3000 2012-03-30 11:00:19
为什么不尝试使用交易?它可以帮助你避免一些插入/更新错误:
try
{
// Start TRANSACTION
mysqli_autocommit($con, false);
mysqli_query('INSERT INTO table SET field = "'.$fieldValue.'"');
// If there is no error then COMMIT
mysqli_commit($con);
}
catch(Exception $e)
{
// If there is an error, then rollback any INSERTS or UPDATES in the TRY block
mysqli_rollback($con);
$theError = $e->getMessage();
}
它强烈建议您使用数据库时,使用try/catch块在你的代码。
你的代码在哪里是$ new_value应该改变?或者你的意思是你一次又一次地将相同的值插入数据库?这是正确的,因为我没有看到你指定任何关于唯一值或什么都没有。 – Bono 2012-03-30 10:37:13
正确我一次又一次地将相同的值插入到数据库中,只需要一个 – Satch3000 2012-03-30 10:38:47
您确定您没有执行过两次代码段(例如'include/require')吗?似乎不可能插入两个记录而不是单个记录...... – 2012-03-30 10:39:14