0

如果我的数据库中的列设置为 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 中执行此任务

4

3 回答 3

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"

于 2012-12-21T00:36:16.207 回答
0

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

于 2012-12-21T00:22:26.707 回答
0

mysql_fetch_array将返回一个字符串数组。支票:

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

$Rows['Reoccour']仅当既是 int 又是 1时才会通过(即为"1" === 1假。

尝试转换为 int 或使用==

于 2012-12-21T00:16:32.197 回答