PHP和mySQL问题我希望你能帮助我。我有一个更新数据库选项(通过单击一个按钮,它运行update.php文件),现在这个update.php负责尝试分离我的PASSENGER表。
目前,我有一个庞大的PASSENGER表,如果今天有商务旅行(这是旅行预订公司),那么他们就在CUSTOMER表中,但我想要任何存档的客户(例如任何人从昨天开始往返,进入ARCHIVED_CUSTOMER表。
现在,我有一个小的PHP脚本,它使用当前PASSENGER表中的信息添加到ARCHIVED_PASSENGER表中,但仅限于参数是PASSENGER ID的位置。
我对脚本中的DELETE FROM PASSENGER部分非常满意,但是想知道是否有人知道允许我从数据库中收集和移动海量信息的代码,其中旅行日期是昨天等等。它是通过PASSENGER表的activeUntil部分完成的。
非常简化PHP脚本,但希望我已经清楚了!
mysql_connect("localhost", "mysql_username", "mysql_password") or die(mysql_error());
mysql_select_db("mysql_database") or die(mysql_error());
$query10 = ("SELECT p.surname, p.passNo, p.activeUntil FROM PASSENGER p WHERE passNo = '20120003'");
$result = mysql_query($query10);
while($row = mysql_fetch_array($result))
{
$surname = $row['surname'];
$passNo = $row['passNo'];
mysql_query("INSERT INTO ARCHIVED_PASSENGER (surname, passNo) VALUES ('$surname', '$passNo') ")
or die(mysql_error());
mysql_query("DELETE FROM PASSENGER (surname, passNo) VALUES ('$surname', '$passNo') ")
or die(mysql_error());
}
答案 0 :(得分:4)
NOW()
给出了当前的时间戳。 24小时前是DATE_ADD(NOW(),INTERVAL -1 DAY)
。
您可以像数字一样比较日期:activeUntil < DATE_ADD(NOW(),INTERVAL -1 DAY)
选择24小时之前activeUntil
为任何内容的行。
您可以将INSERT
和SELECT
合并为:
INSERT INTO `archived_passenger` (columns.....) SELECT columns... FROM `passenger` WHERE ...
(如果achived_passenger
中列的名称与passenger
中的列完全匹配,则可以省略第一组列,并且可以使用*
代替第二组列如果你想选择所有列)
我认为这应该是足够的信息来帮助你做你想做的事情。如果您需要任何其他帮助,请与我们联系。
答案 1 :(得分:1)
假设您的“旅行日期”字段被称为activeUntil
且属于DATE
或DATETIME
数据类型:
... WHERE activeUntil >= DATE_ADD(NOW(), INTERVAL -1 DAY)
修改或<=
,具体取决于“从昨天开始”的含义。