SQL和PHP语法帮​​助

时间:2011-07-08 15:19:58

标签: php mysql

我从数据库中获取数据并将其作为XML文件输出 我正在使用以下格式来获取它 使用for循环

$arrayName['fieldName'] which in my case is $row[publication_date]

在数据库中,它的格式为mm / dd / yyyy ..但我只想输出yyyy,我正在尝试以下代码::

$k = "SELECT EXTRACT(YEAR FROM'$row[publication_date]')";

if($k!=NULL){

$xml_output .="\t\t\t\t<year>" . $k . "</year>\n";

结果是

<year>SELECT EXTRACT(YEAR FROM'1/1/1995')</year> 

但我希望它只是

<year>1995</year> 

我在这做错了什么? plzz帮我解决..

任何问题plzz评论..:)

4 个答案:

答案 0 :(得分:3)

您不能在不在数据库中执行查询的情况下运行SQL:您需要使用PHP的函数。

$timestamp = strtotime($row['publication_date']); // convert date string to unix timestamp

$year = date('Y', $timestamp); // extract only the year

$year存储在XML中。

参考:

http://php.net/strtotime
http://php.net/date

答案 1 :(得分:2)

我只是正常地提取日期而不尝试在数据库服务器上格式化它并使用PHP格式化它。

$date = // code here to gather the date

$date = date('Y', strtotime($date));

echo $date;  // should return the 4 digit year

http://us.php.net/manual/en/function.date.php

答案 2 :(得分:1)

嗯,有一些潜在的问题,但首先是您需要实际使用数据库连接来运行EXTRACT命令。

或者,通过较少的开销,您可以使用字符串切片或正则表达式来提取日期。

答案 3 :(得分:1)

怎么样:

$xml_output .="\t\t\t\t<year>" . preg_replace('#.*/#', '', $row[publication_date]) . "</year>\n";