PHP将记录插入MySQL DB(正在添加多个记录)

时间:2012-03-30 10:33:52

标签: 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个问题:

1st - 正在插入2条记录而不是1条

第二次 - $ new_value没有改变,当我只想要1时,它正在创建具有相同$ new_value值的多个实例。

3 个答案:

答案 0 :(得分:3)

在阅读你的评论之后,我认为这与你所追求的相似:

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

使用INSERT IGNORE而不是INSERT。如果记录没有复制现有记录,MySQL会像往常一样插入它。如果记录是重复的,则IGNORE关键字告诉MySQL以静默方式丢弃它而不会产生错误。

修改 或者正如维陶塔斯指出的那样;如果你想替换值,请使用REPLACE而不是INSERT

答案 1 :(得分:1)

为什么不尝试使用交易?它可以帮助您避免一些插入/更新错误:

 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块。

答案 2 :(得分:0)

  

2nd - $ new_value没有改变,它正在创建多个实例   当我只想要1时,使用相同的$ new_value值。

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