我在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;
}
}
?>