运行下面的SQL语句(运行正常)我发现数据库中的所有表都是白色的。
知道为什么会这样吗?
// check database for necessary updates
$update = mysql_query("SELECT * FROM rent WHERE colour='3C0'");
while($row_update = mysql_fetch_array( $update )) {
$datetime_lower = DateTime::createFromFormat('d/m/Y', $min);
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max);
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']);
if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) {
// date is between do nothing
mysql_close($update);
} else {
// date is not between so update
echo "date is not between";
$update_result = mysql_query("UPDATE rent SET colour='F0F0F0' WHERE substr(pDate, 0, 10) NOT BETWEEN $min AND $max && colour='3C0'");
mysql_close($update_result);
}
}
我收到了一些照片。
这就是它的外观(上面代码省略):
http://i51.tinypic.com/143gpef.jpg
目前的情况如下(代码存在):
答案 0 :(得分:1)
您的while
循环似乎会查看表中的所有结果。似乎在循环的每次迭代中,您首先在PHP中检查日期,然后在更新查询中再次检查日期,并将所有匹配的行更新为F0F0F0。
我不知道为什么你的代码将颜色改为白色而不是#F0F0F0,因为你的代码中没有white或fff,所以我所能做的就是建议一些能让你的代码更有效的东西。
如果您的id
表中有rent
列(自动增量的主键),则可以在您的$update = mysql_query("SELECT * FROM rent WHERE colour='3C0'");
while($row_update = mysql_fetch_array( $update )) {
$datetime_lower = DateTime::createFromFormat('d/m/Y', $min);
$datetime_upper = DateTime::createFromFormat('d/m/Y', $max);
$datetime_compare = DateTime::createFromFormat('d/m/Y g:i a', $row_update['pDate']);
if ($datetime_lower < $datetime_compare && $datetime_upper > $datetime_compare) {
// date is between do nothing
mysql_close($update);
} else {
// date is not between so update
echo "date is not between";
$update_result = mysql_query("UPDATE rent SET colour='F0F0F0' WHERE id=" . $row_update['id'] . " && colour='3C0'");
mysql_close($update_result);
}
}
表中使用此值,而不是更新while循环的每次迭代中的所有行while循环而不是第二次测试日期。
{{1}}