我正在将mySQL结果插入到具有帐户号和交易日期的唯一索引的表中。
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));
}如果条目是重复的,则错误显示为“.的重复条目”。循环就终止了。即使数据库中的现有记录没有重复的值,它也不会占用下一条处理记录。
理想情况下,它应该只显示那些有重复条目的行的错误,但是插入所有那些是唯一的新条目的记录。还有其他类型的循环可以帮助吗?
发布于 2016-12-05 08:16:48
我会使用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";
}
}现在,我还将选择哪个insert语句失败。
发布于 2016-12-05 08:03:05
您可以使用INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO mytable (name,acno,trdate) VALUES ('$name','$acno','$trdate')
ON DUPLICATE KEY UPDATE name=name;或INSERT IGNORE INTO
INSERT IGNORE INTO mytable (name,acno,trdate) VALUES ('$name','$acno','$trdate')https://stackoverflow.com/questions/40969444
复制相似问题