如果Col = 1,提前1周获得单日期?

时间:2012-12-21 00:12:25

标签: php mysql

如果我的数据库中的列设置为1

,我正在尝试获取单个日期

这是我的结构:

CREATE TABLE IF NOT EXISTS `appointments` (
  `ID` int(255) NOT NULL DEFAULT '0',
  `Appointment` varchar(255) NOT NULL,
  `Date` date NOT NULL,
  `Location` text NOT NULL,
  `Reoccour` int(1) NOT NULL DEFAULT '0',
  `howfar` int(255) NOT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

这是我的代码:

$Query = mysql_query("SELECT * FROM appointments");

    while ($Rows = mysql_fetch_array($Query))
    {
        echo "Appointment: {$Rows['Appointment']} <br>";
        echo "Date: {$Rows['Date']} <br>";
        echo "location: {$Rows['Location']} <br>"; 
        if ($Rows['Reoccour'] === 1)
        {
            $NextDate = date('o-m-d', strtotime("+{$Rows['howfar']}"));
            echo "Next Date: {$NextDate}";
        }

    }

这似乎没有添加下一个日期并在我的回声中显示。

我做错了什么? (除了使用mysql_*我不知道如何在PDO中执行此任务

3 个答案:

答案 0 :(得分:1)

$Query = mysql_query("SELECT * FROM appointments");

    while ($Rows = mysql_fetch_array($Query))
    {
        echo "Appointment: {$Rows['Appointment']} <br>";
        echo "Date: {$Rows['Date']} <br>";
        if ($Rows['Reoccour'] == 0)
        {   
        echo "location: {$Rows['Location']} <br><br>"; 
        }
        if ($Rows['Reoccour'] == 1)
        {
            $NextDate = date('o-m-d', strtotime("+{$Rows['howfar']} weeks"));
            echo "location: {$Rows['Location']} <br>"; 
            echo "Next Date: {$NextDate} <br><br>";
        }

    }

你有两个问题。

1)您正在寻找与您的平等进行严格比较,我将其更改为==而不是===

2)您的第二个问题是您的strtotime正确用法将weeks添加到您的查询中。例如:

echo date('o-m-d', strtotime("+3 weeks"));

所以你的语法正确如下: echo date('o-m-d', strtotime("+{$Rows['howfar']} weeks)); // Notice The Additions of "weeks"

答案 1 :(得分:0)

mysql_fetch_array将返回一个字符串数组。 检查:

if ($Rows['Reoccour'] === 1){

只有当$Rows['Reoccour']同时是int和1(即"1" === 1为false时才会通过。

尝试转换为int或使用==

答案 2 :(得分:0)

吉姆的回答是正确的。但是,如果您不想使用PDO,则应该认真考虑使用mysqli_。 mysql_已弃用,但存在一些安全问题。但是,切换到mysqli_是相当轻松的,它增加了各种新功能。