PHP和mySQL问题,我希望你能帮助我。我有一个更新数据库选项(通过单击按钮,它运行 update.php 文件),现在此更新.php负责尝试分离我的 PASSENGER 表。
目前,我有一个巨大的乘客表,如果今天发生了业务旅行(这是一家旅行预订公司),那么它们就在客户表中,但我希望任何存档的客户(例如,从昨天向后旅行的任何人)都被放入ARCHIVED_CUSTOMER表中。
目前,我有一个小的 PHP 脚本,它使用当前 PASSENGER 表中的信息添加到ARCHIVED_PASSENGER表中,但仅限于参数为 PASSENGER ID 的位置。
我对脚本的"从乘客中删除"部分很满意,但想知道是否有人知道允许我从数据库中收集和移动大量信息的代码,其中旅行日期是昨天开始等。
非常精简的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());
}
MySQL中的NOW()
给出了当前时间戳。 24小时前是DATE_ADD(NOW(),INTERVAL -1 DAY)
。
您可以像比较数字一样比较日期:activeUntil < DATE_ADD(NOW(),INTERVAL -1 DAY)
选择activeUntil
在 24 小时前的任何行。
您可以像这样组合INSERT
和SELECT
:
INSERT INTO `archived_passenger` (columns.....) SELECT columns... FROM `passenger` WHERE ...
(如果 achived_passenger
中的列名称与 passenger
中的列名称完全匹配,则可以省略第一组列,如果要选择所有列,可以使用*
而不是第二组列)
我认为这应该有足够的信息来帮助你做你想做的事情。如果您需要任何其他帮助,请告诉我。
假设您的"旅行日期"字段称为activeUntil
,并且数据类型为 DATE
或DATETIME
:
... WHERE activeUntil >= DATE_ADD(NOW(), INTERVAL -1 DAY)
编辑:或<=
,取决于您所说的"从昨天开始"是什么意思。