如果我的数据库中的列设置为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中执行此任务
答案 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_是相当轻松的,它增加了各种新功能。