PHP:如何从数据库中添加月份数量的日期?

时间:2017-03-23 05:25:56

标签: php mysql

我在数据库t_calibrator(calperiod = 12,24和36)中有int个月的数据,我想用$callast中的输入日期计算,

这是我创建的代码(但总是得到1970-01-01):

$calperiod = mysqli_query($conn, "SELECT calperiod FROM t_calibrator WHERE id_calibrator='$id_calibrator'");
$add = date('Y-m-d', strtotime('+".$calperiod" month', strtotime($callast)));

我的参考代码来自$add = date('Y-m-d', strtotime('+24 month', strtotime($callast)));,是的,但只能工作24个月。

UPDATE 现在我尝试使用此代码:

$sql = "SELECT * FROM t_calibrator WHERE id_calibrator = '$id_calibrator'";
$result = mysqli_query ($conn,$sql);
$caldata = mysqli_fetch_array ($result);
$add = date('Y-m-d', strtotime('+".$caldata['calperiod']." months', strtotime($callast)));

但显示如下错误:

  

解析错误:语法错误,意外' calperiod' (T_STRING),   期待','或者')'在   /storage/h7/747/1148747/public_html/pages/calinputhistory.php上线   19

任何人都可以帮我解决这个问题吗? (抱歉我的英语不好)

2 个答案:

答案 0 :(得分:0)

更新了您的代码,如下所示

$result = mysqli_query($conn, "SELECT calperiod FROM t_calibrator WHERE id_calibrator='$id_calibrator' LIMIT 1");

$row = mysqli_fetch_assoc($result);

$add = date('Y-m-d', strtotime('+'.$row['calperiod'].' months', strtotime($callast)));

答案 1 :(得分:0)

mysqli_query的返回是结果集(如果查询执行成功),如果发生错误则返回FALSE。测试mysqli_query的返回值,如果它不是FALSE,则获取一行。如果我们得到一行,从calperiod列中获取值。

 $sql = "SELECT calperiod FROM ... ORDER BY ... LIMIT 1";
 if( $sth = mysqli_query($conn,$sql) ) {
     if( $row = mysqli_fetch_assoc($sth) ) {
         $calperiod = $row["calperiod"];  
         echo $calperiod;
         // we have a value ...

     } else {
         echo "no row returned";
     }
 } else {
     echo "error in query execution"; 
     die(mysqli_error($conn);
 }