我想避免导入重复记录,但是在“ ON DUMPLICATE KEY UPDATE”上不起作用

时间:2019-02-15 11:21:08

标签: php mysql

我在dbf文件中有一个表。

我正在编写PHP脚本,以使用PHP和ODBC连接将数据从dbf文件导入mysql。

因此,我有一个名为ffc的文件。它具有四列文件,格式,公共,dbf。 dbf文件没有主键。

我在mysql中用4个字段创建了一个表。我还添加了一个“ id”字段作为主键。

我正在编写PHP以将记录从dbf文件导入到mysql。但是如果记录存在,则更新(如果记录已在dbf文件中更新),并移至下一条记录,如果记录不存在,则添加新记录。

我正在使用ON DUPLICATE KEY UPDATE file,但无法正常工作。 为什么我第一次运行脚本;所有记录都将导入。但是,当我再次运行脚本时,它们会再次导入。

这是代码。

<?php require_once('../database.php'); ?>

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
error_reporting(E_ERROR | E_PARSE);

//ODBC connection
$connectionstring = odbc_connect("foxpro", "", "");

//Select statement to pull data 
$q1 = "SELECT * FROM ffc.dbf";
$rw  = odbc_exec($connectionstring, $q1);

//Loop through to insert data into mysql
while ($rs = odbc_fetch_array($rw)) {
   //print_r($rs);
     $file =  $rs['file'];
     $format =  $rs['format'];
     $commons =  $rs['commons'];
     $dbf =  $rs['dbf'];


//Insert/Update query
$test_query = "INSERT INTO test (file, format, commons, dbf) VALUES (?,?,?,?) ON DUPLICATE KEY UPDATE file = ?, format = ?, commons = ?, dbf = ?;";

if(!($stmt_test_query = $mysqli->prepare($test_query))) {
    echo "Prepare (1) failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if(!($stmt_test_query->bind_param('iiiiiiii', $file, $format, $commons, $dbf,$file, $format, $commons, $dbf))) {
    echo "Bind params (1) failed: (" . $mysqli->errno . ") " . $mysqli->error;
}
if(!($stmt_test_query->execute())) {
    echo "Execute (1) failed: (" . $mysqli->errno . ") " . $mysqli->error;
} 



}
?>

0 个答案:

没有答案