更改mysql_fetch返回数组中的日期格式

时间:2013-07-24 08:06:42

标签: php

我有这样的查询

select fname,joined_date from employees where id=1

目前我用来显示此返回员工详细信息的日期格式是Y-m-d。 但现在我需要将默认的mysql格式Y-m-d转换为d / m / Y(在所有日期信息显示字段中)。

对我而言,非常非常困难通过所有文件进行日期格式转换。

所以我想在我的数据库类中做这样的事情。我的数据库类中有这样的函数

function fetch($res){
   $row = mysql_fetch_assoc($res);
   foreach($row as $key=>$value){
   if(preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/',$value))
      $row[$key] = date('d/m/Y',strtotime($value));
   }
   return $row;
}//end function

我正在使用这个函数

$row = $db->fetch($res);

while($row = $db->fetch($res)){...}

我收到了预期的输出,但有错误信息

  

foreach的无效参数

它看起来像执行获取功能代码(total_num_rows + 1)次

如果我使用for循环而不是foreach,则获取未定义的偏移量错误

目前我正在使用这样的东西来逃避

if(is_array($row)){...}

当我寻找$ res类型时, 这显示了 资源(第一次迭代),资源(第二次)

for $ row array

数组(第一次迭代),布尔(第二次)

有人可以告诉我为什么会这样吗? 或者有更好的方法吗?

提前致谢。

3 个答案:

答案 0 :(得分:1)

当您到达结果的末尾时,mysql_fetch_assoc()会返回false。您需要检查该案例:

function fetch($res){
   $row = mysql_fetch_assoc($res);
   if ($row) {
     foreach($row as $key=>$value){
       if(preg_match('/^[0-9]{4}-[0-9]{2}-[0-9]{2}$/',$value)){
          $row[$key] = date('d/m/Y',strtotime($value));
       }
     }
   }
   return $row;
}

答案 1 :(得分:0)

如果您想要此格式为ex:2015年6月19日 用这个: 日期(“F d,Y”,strtotime($ myrow ['date'])); 其中$ myrow ['date']是你从mysql行中获取的 请查看此链接以获取进一步的帮助:http://erikastokes.com/mysql-help/display-mysql-dates-in-other-formats.php

答案 2 :(得分:-1)

您可以更轻松地将日期转换为MySQL命令中已有的所需格式。 例如:

SELECT *, DATE_FORMAT(date, "%m-%d-%y") AS date FROM my_table;