Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用ODBC驱动程序将MS Access中的新记录自动插入MySql?_Php_Mysql_Ms Access_Odbc - Fatal编程技术网

Php 如何使用ODBC驱动程序将MS Access中的新记录自动插入MySql?

Php 如何使用ODBC驱动程序将MS Access中的新记录自动插入MySql?,php,mysql,ms-access,odbc,Php,Mysql,Ms Access,Odbc,我正在从MS Access到MySql数据库检索考勤日志。 我只想从MS Access数据源获取/检索新记录,并上传到MySql数据库(最好是自动上传)。 以下是我的当前代码,请帮助: <?php // Connect to MySql Local Database $con = mysqli_connect("localhost", "root", ""); // Connect to Microsoft Access Using ODBC Driver $connection =

我正在从MS Access到MySql数据库检索考勤日志。 我只想从MS Access数据源获取/检索新记录,并上传到MySql数据库(最好是自动上传)。 以下是我的当前代码,请帮助:

<?php 
// Connect to MySql Local Database
$con = mysqli_connect("localhost", "root", "");

// Connect to Microsoft Access Using ODBC Driver
$connection = odbc_connect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};Dbq=C:\Program Files (x86)\ZKTeco\att2000.mdb", "", "");

// Check if Connect works
if($connection){
    echo odbc_autocommit($connection);
    $QUERY  = odbc_exec($connection, "SELECT * FROM `CHECKINOUT`") or die(odbc_error($connection));


 //If have records in MS Access Data Source
        if(odbc_fetch_row($QUERY) > 0){
            while ($ATT = odbc_fetch_array($QUERY)) {
                $result = $ATT["CHECKTIME"];

            // Here I want to Insert only New Records from MS Access 

            $INSERT = mysqli_query($con, "INSERT INTO `odbc`.`attendance` (`DATETIME`, `DATE`, `TIME`) VALUES ('$result', '$result', '$result')") or die(mysqli_error($con));
        }
    }
    echo odbc_commit($connection);
}else{
    echo "False";
}
?>

考虑使用一个临时表,
考勤\u temp
,该表在结构上与最终表完全相同,
考勤
,但每次运行脚本时都会定期清理:

mysqli_query($con, "DELETE FROM `odbc`.`attendance_temp`");    # OUTSIDE WHILE LOOP
...
$INSERT = mysqli_query($con, 
                       "INSERT INTO `odbc`.`attendance_temp` (`DATETIME`, `DATE`, `TIME`)
                        VALUES ('$result', '$result', '$result')")
填充临时表后,运行从临时表到最终表的查询,以避免最终目标表中出现重复记录:

插入odbc。`attention`(`DATETIME`、`DATE`、`TIME`)
选择t.`DATETIME',t.`DATE',t.`TIME`
来自“odbc”。“出席时间”
左连接“odbc”。“出席人数”f
在t.`DATETIME`=f.`DATETIME上`
其中f.`DATETIME`为空;

首先,您应该解释哪些代码不起作用。如果这是一个单镜头操作,那么从MS Access而不是PHP中完成这一操作会更容易得多?你真的是指不重复的记录吗?@Parfait是的,我不想要重复的记录,因为每次我提交这份表格时它都会重复记录。