插入唯一记录时mysql错误是否在第一个错误时终止foreach循环?

时间:2016-12-05 07:46:34

标签: php mysql error-handling

我将mySQL结果插入到表中,该表具有帐号和trasaction日期的唯一索引

foreach ($fulldata as $partdata){
       $name=$partdata['name'];
       $acno=$partdata['acno'];
       $trdate=$partdata['trdate'];
       $sql="INSERT into mytable (name,acno,trdate) values ('$name','$acno','$trdate')";
       $result=mysqli_query($con,$sql) or die(mysqli_error($con));
}

如果条目重复,则会显示错误'重复输入...'并且循环终止。即使它没有数据库中现有记录的重复值,它也不会占用下一个处理记录。

理想情况下,它应该只对那些具有重复条目的行显示错误,但是插入所有那些唯一新条目的记录。任何其他类型的循环都可以帮助吗?

1 个答案:

答案 0 :(得分:1)

我会使用try / catch方法来回显语句。但是我使用PDO。

foreach ($fulldata as $partdata){
       $name=$partdata['name'];
       $acno=$partdata['acno'];
       $trdate=$partdata['trdate'];
       $sql="INSERT into mytable (name,acno,trdate) values (?,?,?)";

       try {

            $query = $db->prepare($sql);
            $query->execute(array($name, $acno, $trdate));

       } catch (PDOException $e) {
            echo $e->getMessage();
            echo 'Fail to execute following statement: ' . $sql ."\r\n";    
      }    
}

现在我还将插入语句失败。