php - 为什么这个 PDO Insert 执行了两次?

标签 php mysql while-loop fgetcsv

这已将 csv 中的每一行插入数据库两次,现在是三次。我在循环中放入的任何其他内容都不会发生超出其应有的情况。

$file_handle = fopen("uploads/numbers.csv", "r");    
$stmt = $db->prepare("INSERT INTO database
(firstname,lastname,phonenumber) VALUES
(:field1,:field2,:field3)");

while (($line_of_data = fgetcsv($file_handle, 1000, ",")) !== FALSE) 
{
$stmt->execute(array(':field1' => $line_of_data [0], ':field2' => $line_of_data[1], ':field3' => $line_of_data[2]));
}

最佳答案

在数据库上设置正确的主键。 (名字,姓氏)或(名字,姓氏,电话号码)取决于用法。 Ta-da,不再重复。

我假设 James 的观点是正确的,因为 CSV 包含数据库中预先存在的数据,但无论哪种方式,主键都会防止重复。

如果您使用名字、姓氏键并且希望脚本能够更新电话号码,则可以使用 REPLACE 而不是 INSERT。

关于php - 为什么这个 PDO Insert 执行了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24108927/

相关文章:

mysql - 从同一个表连接 MySQL 结果

php - 我在更新 MySQL 表行时遇到问题

java - Java 中符合 PMD 的流复制

php - 如何使用 PHP 删除文件中的前 11 行?

JavaScript 不在 PHP 加载的 HTML 上运行

mysql - 如何匹配两个表,直到表 1 行值在表 2 列中匹配 3 次

Java - 访问在不同的 'if/else if' 语句中创建的对象?

java - 当标志在不同线程中更改时循环不会结束

php - header 问题(位置)

PHP提取带有大于号的数组?