我正在制作一个 PHP 实用程序,它将 CSV 文件导入并分析到 $data
中,以及是否将"new"行插入数据库 ($saveNew
)。
现在,我遇到了一些丑陋的困惑:(在广义的伪 PHP 中)
function synchronize($data,$saveNew) {
$existing_ids = $table->find_all('ID'); //array of ID's in the table
$incoming_ids = get_key('ID',$data); //grabs the ID field from each record
$new_ids = array_diff($incoming_ids,$existing_ids);
foreach ($data as $record) {
if (in_array($record['ID'],$new_ids)) { //it's new
if ($saveNew) $table->insert($record);
else continue;
} else {
$table->update($record);
}
}
}
对我来说,这只是有一种味道,我想我可以通过一个查询来完成这个任务,只是我对 SQL 不太熟悉。
我在应用程序中使用简单的 ORM,但我可以轻松地直接使用 SQL。
哦,我正在使用 MySQL。
这可以通过一个查询来完成吗?这似乎是一个常见问题,有一个简单的解决方案,但我就是无法弄清楚。
最佳答案
看看 MySQL 的 INSERT ... ON DUPLICATE KEY ...
语法,它允许您执行此操作:http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html
您是否想在 ORM 中或在您的特定子例程中实现它取决于您......
关于php - 插入新行,更新旧行 : how?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372583/