PHP插入记录到MySQL数据库(多记录被添加)

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

+0

你的代码在哪里是$ new_value应该改变?或者你的意思是你一次又一次地将相同的值插入数据库?这是正确的,因为我没有看到你指定任何关于唯一值或什么都没有。 – Bono 2012-03-30 10:37:13

+0

正确我一次又一次地将相同的值插入到数据库中,只需要一个 – Satch3000 2012-03-30 10:38:47

+1

您确定您没有执行过两次代码段(例如'include/require')吗?似乎不可能插入两个记录而不是单个记录...... – 2012-03-30 10:39:14

我认为这是类似于Wh是东西一样$ NEW_VALUE值在你之后,读您的评论后:

INSERT IGNORE INTO tablename (fields) 
VALUES(values); 

使用INSERT IGNORE,而不是INSERT。如果一条记录没有复制现有的记录,MySQL会照常插入它。如果记录是重复的,那么IGNORE关键字告诉MySQL放弃它而不会产生错误。

编辑 或者作为维陶塔斯指出;如果你想替换值使用替换INSERT

代替
+0

INSERT IGNORE仍然添加两次 – Satch3000 2012-03-30 10:58:39

2日 - $ NEW_VALUE没有改变,它的创建多个实例 用时,我只希望在同一$ NEW_VALUE值1

$ new_value在哪里更改?它是如何改变的?你确定你没有多次按下浏览器刷新按钮吗?

+0

只有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块在你的代码。