我想在年底运行MySQL查询。查询没问题。但我认为PHP代码效果不佳。在Dreamweaver中,第二行显示错误。我该如何解决这个问题:
$gdate = date("Y-m-d", strtotime('today'));
if($gdate==date("d-m-Y",strtotime('last day of december')){
$queryrun=mysql_query( $query);
答案 0 :(得分:2)
$gdate = date("Y-m-d", strtotime('today'));
if($gdate==date("Y-m-d",strtotime('last day of december'))){
$queryrun=mysql_query( $query);
你正在检查d-m-Y
这是错误的。日期格式不同,查询未运行。而且还缺少一个结束)
括号。
注意:不推荐使用mysql_query。
答案 1 :(得分:2)
查看代码,答案非常明显。这是我的测试代码:
$gdate = date("Y-m-d", strtotime('today'));
$lastdate = date("d-m-Y",strtotime('last day of december'));
echo $gdate . '<br />';
echo $lastdate . '<br />';
我的输出是:
2014-01-01
31-12-2014
因为在一行中您有Y-m-d
而另一行有d-m-Y
。
我建议这样做:
$date_format = "Y-m-d";
$gdate = date($date_format, strtotime('today'));
$lastdate = date($date_format,strtotime('last day of december'));
if ($gdate == $lastdate) {
$queryrun=mysql_query( $query);
}
通过在一个地方设置$date_format
,您可以避免因手动将其放入每张支票而感到困惑。
答案 2 :(得分:1)
您的括号仍处于打开状态,计算您拥有的(
个数量,以及您在第二行中拥有的)
个数量。
如果您只是在{
之前添加另一个结束括号,那么您将没事。
即,(注意第二行的3个右括号)
$gdate = date("Y-m-d", strtotime('today'));
if($gdate==date("d-m-Y",strtotime('last day of december'))){
$queryrun=mysql_query( $query);
}
虽然以上内容将修复您的语法并允许代码运行,但由于您的日期格式,您仍然会遇到问题。
确保您使用的日期格式一致。
您的$gdate
使用的格式与if
声明中的格式不同。
$gdate = date("d-m-Y", strtotime('today'));
if($gdate == date("d-m-Y",strtotime('last day of december'))){
$queryrun = mysql_query( $query);
}
答案 3 :(得分:1)
有几件事。首先,date
不必给出时间戳。如果省略该参数,它只使用当前日期。而strtotime('today')
无论如何都是一种糟糕的方式。最好使用time()
,它不需要进行任何解析。
其次,你正在改变你的论点。您拨打date("Y-m-d")
然后date("d-m-Y")
,然后进行比较。它们永远不会匹配,因为订单不同。
$gdate = date("Y-m-d");
if($gdate==date("Y-m-d", strtotime('last day of december')){
$queryrun=mysql_query( $query);
}