我有这样的查询
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
数组(第一次迭代),布尔(第二次)
有人可以告诉我为什么会这样吗? 或者有更好的方法吗?
提前致谢。
答案 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;