2017-06-19 31 views
0

我有一個代碼可以創建並將.csv文件插入到MySQL。現在我想要得到的是如何通過導入.csv文件來更新我的數據(如果表中已有日期)。通過使用PHP導入.csv文件,SQL更新查詢表中存在現有日期

我試圖用一個簡單的更新查詢和它的工作正常...但棘手的部分是從.csv文件獲取日期,並將其與MySQL中的日期進行比較。你能給我提示如何做到這一點?

這裏是我的代碼:

$file = 'C:\Users\HP\Desktop\csvfiles\ADJTIME.csv'; 
$table = 'adjtime'; 


    ini_set('auto_detect_line_endings',TRUE); 
$handle = fopen($file,'r'); 
// first row, structure 
if (($data = fgetcsv($handle)) === FALSE) { 
//echo "Cannot read from csv $file";die(); 
} 
$fields = array(); 
$field_count = 0; 
for($i=0;$i<count($data); $i++) { 
$f = strtolower(trim($data[$i])); 
if ($f) { 
// normalize the field name, strip to 20 chars if too long 
$f = substr(preg_replace ('/[^0-9a-z]/', '_', $f), 0, 100); 
$field_count++; 


if($f == 'date'){ 
    $fields[] = '`'.$f.'` DATE()'; 
} else { 
$fields[] = '`'.$f.'` VARCHAR(500)'; 

} 
} 
} 


$sqlgetdate = ("SELECT DATE from $table where DATE = '5/3/2017' "); 

echo $sqlgetdate; 
$sqlupdate = ("UPDATE $table SET Fieldname = 'John' where DATE = '5/3/2017' "); 
echo $sqlupdate; 
+0

您需要維護csv文件的格式。例如:第一列是A.ID,第二列是日期。 然後遍歷fgetcsv得到的結果並運行查詢來檢查該日期是否在您的表中。如果可以的話再做點什麼,如果不行的話 –

+0

是你表中的日期列是否是唯一鍵? –

+0

@DileepKumar是它的唯一鍵 – Rukikun

回答

1

MySQL的接受'yyyy-mm-dd' 日期格式,以便您的查詢應該是$sqlgetdate = ("SELECT DATE from $table where DATE = '2017-03-05' ");$sqlupdate = ("UPDATE $table SET Fieldname = 'John' where DATE = '2017-03-05' ");

+0

我已經改變,但它沒有回答我目前的問題:( 我想知道是否有代碼,您可以讀取.csv文件的日期並將其與MySQL表日期進行比較。 – Rukikun

0

在創建日期列的唯一密鑰,並使用INSERT ... ON DUPLICATE KEY UPDATE聲明。

可以找到文檔here