我想阅读从Excel导出的csv文件并将其存储在MySQL表中。列是普通字符串,整数或日期。由于csv文件中的日期被视为字符串,但我希望它们与MySQL DATE类型一起存储,因此我有表字段名称和日期类型的并行数组。我在行上有一个外循环,在列上有内循环。在内部循环中,我将列数据类型与“DATE”进行比较,因此我可以使用PHP日期格式化函数将字符串“1/21/2014”重新转换为MySQL DateTime格式。
问题:strcasecmp($ colTypes [$ iCol],“DATE”)== 0从不评估为TRUE,即使$ colTypes [$ iCol]回声“DATE”。我相信这与php存储字符串“DATE”的方式与它存储在文件读取中的方式有关。
以下是代码:
while (($data = fgetcsv($handle, 1000, ',', '"')) !== FALSE)
{
$num = count($data);
echo "There are : " . $num . " fields in line " . $row . "<br />";
if ($row > 0) { // Skip header row
// Build a CSV list of column values
$values = '';
for ($iCol=0; $iCol < $num; $iCol++) {
if ($iCol == 0) {$sep = '\'';} // this avoid leading comma
else {$sep = ', \'';}
$Type = $colTypes[$iCol];
if (strcasecmp($Type,"DATE") == 0){
//...
//...
}
有什么想法吗?
提前致谢。
版
答案 0 :(得分:0)
$Type = trim(strtolower($colTypes[$iCol]));
if ($Type == "date"){
....
}
并尝试这样做,看看你得到了什么:
echo strcasecmp($Type,"DATE");
看看你是否得到0
答案 1 :(得分:0)
从数据库中获取日期后,只需使用此功能:
$date1 = new DateTime($date_from_db);
$date2 = $date1->format('d-m-y');
if (strcasecmp($Type,$date2) == 0){...}
我查了一下,它对我有用。