在做个公告栏,发新的公告时选择截止日期,结果输出的不是日期。
直接把代码给输出进去了
页面上显示的是这个(就是echo $query;的内容)
succeedINSERT INTO bbs (id,r_date,unit,topic,ip,content,l_date,category) VALUES ('null','12-03-01 21:31:14','charlie','test1', '','test2','date_add(12-03-01 21:31:14,interval 4 month)','sadasd')
具体请看代码<?php
        
include("conn.php"); 
include("head.php");
$topic=$_POST['topic'];
$unit=$_POST['unit'];
$content=$_POST['content'];
$category=$_POST['category'];
$data= mysql_query($query);
echo 'succeed';if ($topic) {        
           $rdate=date ("y-m-d H:i:s");//公告期限转换        switch ($limit) {
        case '1':   
                 $limit_day='interval 7 day';
                 break;
        case '2':
                 $limit_day='interval 14 day';
                 break;
        case '3':
                 $limit_day='interval 21 day';
                 break;
        case '4':
                 $limit_day='interval 1 month';
                 break;
        case '5':
                 $limit_day='interval 35 day';
                 break;
        case '6':
                 $limit_day='interval 42 day';
                 break;
        case '7':
                 $limit_day='interval 49 day';
                 break;
        case '8':
                 $limit_day='interval 2 month';
                 break;
        case '9':
$limit_day='interval 3 month';
                 break;
        default:
                 $limit_day='interval 4 month';
                 break;
        }
 $ldate="date_add('.$rdate.','.$limit_day.')";//用php的code得出截止日期,这里代码用的不对吗?

           $content=ereg_replace(chr(13),'<br>',$content);
   $query = "INSERT INTO bbs (id,r_date,unit,topic,ip,content,l_date,category) VALUES ('null','$rdate','$unit','$topic', '$REMOTE_ADDR','$content','$ldate','$category')";
      
           echo $query;
           $result=mysql_query($query);         //将查询句中半形的 " 符号换成全型的 ” 符号,以免造成查询句错误
} else {
echo "no title<br>";
}
echo "<table border='0' width='580' cellpadding='0' cellpadding='0'><tr><td align=right>\n";
?>

解决方案 »

  1.   

    date_add('12-03-01 21:31:14', interval 4 month)是mysql定义的函数,加上单引号mysql就不会去解析
      

  2.   


    php里面增加时间的函数请问是什么呢,因为我尝试着直接输出$ldate(echo $ldate;)的东西,结果就是date_add('12-03-01 21:31:14', interval 4 month)
      

  3.   

    http://cn.php.net/manual/zh/datetime.add.php 这段代码不是你写的吧?那个date_add()本就是mysql里的函数,和PHP无关。SQL语句没错的话就结果就是2012-07-01 21:31:14
      

  4.   


    的确是参考了一个公告板的例子,sql里面的确是date_add的函数这点我清楚
    看来是那个例子本身就有问题。因为例子上就直接是这个代码了(date_add)
    但如果是sql 代码的话
    应该是 $ldate="select date_add('.$rdate.','.$limit_day.')";说道这个我又觉得困惑了,因为select date_add('.$rdate.','.$limit_day.')这个代码,我把里面的'.$rdate.','.$limit_day.'替换成具体的时间,在sql里面是能够执行的
    但是我自己编的网页里面得出的$ldate结果就是空的。
    下面的代码就是改进的
     $ldate="select date_add('.$rdate.','.$limit_day.')";
    $lcdate=mysql_query($ldate);
    $query = "INSERT INTO bbs (id,r_date,unit,topic,ip,content,l_date,category) VALUES ('null','$rdate','$unit','$topic', '$REMOTE_ADDR','$content','$ldate','$category')";
    最后得出来的$ldate是空的
      

  5.   

    呃正确的语句是:
    $rdate = date ("y-m-d H:i:s");
    $limit_day = switch() // 你懂的$ldate="date_add('$rdate', $limit_day)";
    $query = "INSERT INTO bbs (id,r_date,unit,topic,ip,content,l_date,category) VALUES ('null','$rdate','$unit','$topic', '$REMOTE_ADDR','$content', $ldate,'$category')";
    // 注意$ldate没有单引号包含,因为加上就会被当成普通字符串处理
    mysql会在稍候执行时调用该函数,l_date字段的值对应的就是date_add()的返回值。
      

  6.   

    date_add(now(),interval 1 month);
      

  7.   

    sql中引号里面的就是值, 
      

  8.   


    不行啊,直接显示Parse error: syntax error, unexpected T_VARIABLE in /post2.php on line 49 
    也就是 $ldate="date_add('$rdate', $limit_day)";这行,还是要加两个.的
      

  9.   

    $ldate="date_add('$rdate', $limit_day)"; 这句没看出问题,问题多半是上一行没有用分号结束怎么的。
    检查上一行,八成是switch没修改好