-3

我有这样的查询

select fname,joined_date from employees where id=1

目前我用来显示这个返回的员工详细信息的日期格式是 Ymd。但是现在我需要将默认的mysql格式Ymd转换为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 的无效参数

看起来 fetch 函数代码执行了 (total_num_rows + 1) 次

如果我使用 for 循环而不是 foreach,则会出现未定义的偏移错误

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

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

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

对于 $row 数组

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

谁能告诉我为什么会这样?还是有更好的方法来做到这一点?

提前致谢。

4

3 回答 3

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;
}
于 2013-07-24T08:15:17.943 回答
0

如果您想要这种格式,例如:2015 年 6 月 19 日,请使用:date("F d, Y",strtotime($myrow['date'])); 其中 $myrow['date'] 是您从 mysql 获取的行明智地检查此链接以获得进一步的帮助:http ://erikastokes.com/mysql-help/display-mysql-dates-in-other-formats.php

于 2015-06-19T07:09:21.430 回答
-1

让您在 MySQL 命令中将日期转换为所需的格式会更容易。例子:

SELECT *, DATE_FORMAT(date, "%m-%d-%y") AS date FROM my_table;
于 2014-12-07T21:30:16.343 回答