我有一个代码可以创建并将.csv文件插入MySQL。现在我想得到的是如果通过导入.csv文件在我的表中已经存在日期,如何更新我的数据。
我尝试使用简单的更新查询来完成它并且工作正常...但是棘手的部分是从.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 :(得分: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' ");
答案 1 :(得分:0)
在日期列上创建一个唯一键,并使用INSERT ... ON DUPLICATE KEY UPDATE
语句。
可以找到文档here