ตัวอย่าง
โค้ด: เลือกทั้งหมด
set_time_limit ( 0 ); // set time limit = 0
$cn = odbc_connect("pro_mdb2", "", "") or die("ติดต่อฐานข้อมูลไม่ได้");//ติดต่อฐานข้อมูลผ่าน ODBC
$sql_con = "SELECT * FROM `convert` ";//select ตาราง convert เก็บชื่อตาราง และ วันที่ ที่ file DBF มีการเปลี่ยนแปลง
$re_con = $db->sql_query($sql_con);//ทำการ query
$date_check = array();// สร้างตัวแปร $date_check ให้เป็น array
//ทำการเปลี่ยนให้ ชื่อตารางเป็น key และ วันที่เป็น value ของ array
foreach($re_con as $u => $h){
$u = $h['tb_name'];
$date_check[$u] = $h['date_save'];
}
//วน loop ชื่อตาราง ($tb คือ array ของตาราง อยู่ในหน้า config)
foreach($tb as $k){
$tb_name = $dbf_path.strtoupper( $k ).'.DBF'; //$tb_name = ที่อยู่ไฟล์
$time = date('Y-m-d', filectime($tb_name));//$time = วันที่ที่มีการเปลี่ยนแปลง
//ตรวจสอบว่าวันที่ ในฐานข้อมูล SQL กับ DBF มีค่าเท่ากันหรือไม่ ถ้าเท่า ก็จะไม่ทำการ insert ลงใน SQL
if($date_check[$k] >= $time){
continue;
}
$rs = odbc_exec($cn, 'SELECT * FROM '.$k.' ') or die("รัน SQL ไม่ผ่าน");//select ข้อมูลจาก DBF
$data_arr = array();
//ทำการวน loop ข้อมูลที่ได้
while( $row = odbc_fetch_array($rs) ) {
$data_arr[] = $row; //เก็บข้อมูลที่ได้ไว้ใน $data_arr
}
//ตรวจสอบว่าข้อมูลมีค่าหรือไม่
if(!empty($data_arr)){
$name_field = array_keys($data_arr[0]);//เก็บชื่อ field
}
$limit = 500; //สร้าตัวแปรมาเก็บค่า limit = 500
$count = count($data_arr);// นับจำนวนที่ select มาทั้งหมด
$loop = ceil($count/$limit);//จำนวนทั้งหมด หาร ด้วย limit จะได้จำนวนรอบทั้งหมด ปัดเศษขึ้น
$field = array();
//สั่งให้เคลียตารางใน SQL
$sql_cr = "TRUNCATE TABLE `".$k."` ";
$db->sql_query($sql_cr);
//วน loop ตามจำนวนรอบ
for($i=0;$i<$loop;$i++){
$sql = 'INSERT INTO '.$k.' ('. implode(',', $name_field).') VALUES ';
$arr = array();
//วน loop รอบละ 500
for($j = $limit * $i, $c = $j + $limit; $j < $c; $j++) {
//ตรวจสอบถ้าข้อมูลครบตามจำนวนที่นับมาให้ทำการหยุด
if($j == $count){
break;
}
if($k == 'WDATA'){
if($data_arr[$j]['DAYOUT'] == ''){
$data_arr[$j]['DAYOUT'] = '0000-00-00';
}
if($data_arr[$j]['TMOUT'] == ''){
$data_arr[$j]['TMOUT'] = '00:00:00';
}
if($data_arr[$j]['DAYIN'] == ''){
$data_arr[$j]['DAYIN'] = '0000-00-00';
}
if($data_arr[$j]['TMIN'] == ''){
$data_arr[$j]['TMIN'] = '00:00:00';
}
$data_arr[$j]['PRICE'] = (int)$data_arr[$j]['PRICE'];
$data_arr[$j]['RATE'] = (int)$data_arr[$j]['RATE'];
$data_arr[$j]['VAT_R'] = (int)$data_arr[$j]['VAT_R'];
$data_arr[$j]['W1'] = (int)$data_arr[$j]['W1'];
$data_arr[$j]['W2'] = (int)$data_arr[$j]['W2'];
}
if($k == 'USERLIST'){
$pass_w = iconv( 'TIS-620', 'UTF-8', $data_arr[$j]['PASS_W']);
$arr[] = " ('".$data_arr[$j]['CODE']."','".$data_arr[$j]['NAME']."','".$data_arr[$j]['TRUSTEE']."',
'".$pass_w."','".$data_arr[$j]['REMARKS']."') ";
}else{
$arr[] = " ('".iconv( 'TIS-620', 'UTF-8', implode("','", $data_arr[$j]))."') ";
}
}
$sql .= implode(',', $arr); //นำ sql มาต่อกัน
$db->sql_query($sql); //ทำการ query
}
//ตรวจสอบว่าตัวแปรมีอยู่หรือไม่
if(isset($date_check[$k])){
$sql = "UPDATE `convert` SET date_save = '". $time."' WHERE tb_name = '".$k."' ";
$db->sql_query($sql);
}else{
$sql = "INSERT INTO `convert` (tb_name,date_save) VALUES ('".$k."','". $time."') ";
$db->sql_query($sql);
}
}
exit('complete');
odbc_close($cn);