php strcmp与文件数据

时间:2014-01-23 04:17:59

标签: php file strcmp

我想阅读从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){ 

//...
//...
}

有什么想法吗?

提前致谢。

2 个答案:

答案 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){...}

我查了一下,它对我有用。