好吧,我有一个脚本可以处理一些数据,然后将其导入 mysql 数据库。
然后,我还有另一个脚本,它处理一些其他数据,然后它也将其导入 mysql 数据库。
我想做的事:
我想用第三个脚本来控制(例如,查看最后导入了多少行)仅使用最后一个脚本导入的行。不是这些由第一个导入的(但我不希望删除第一个导入的行以仅包含最后导入的行)。
MySQL或PHP中有什么方法吗?
如果我不清楚某事告诉我。
先感谢您!
您总是可以last_import
在数据库中添加一列。每次您的脚本将某些内容导入 mysql 数据库时,在导入之前,它会将所有的值更改last_import
为 no 或类似的值,然后输入其值为 yes 或类似的值的行。使用此方法,您可以轻松判断哪些是上次导入的。
假设这是您的数据库:
-----------------
| id | name |
-----------------
| 1 | Simon |
-----------------
| 2 | Richard|
-----------------
| 3 | Jon |
-----------------
添加此字段:
-------------------------------
| id | name | last_import |
-------------------------------
| 1 | Simon | N |
-------------------------------
| 2 | Richard| N |
-------------------------------
| 3 | Jon | N |
-------------------------------
因此,如果您使用的是 mysql(如果不是,请告诉我),请在每次插入和处理数据时执行此操作:
// Process data before here
$query = "UPDATE thetable SET last_import = 'N'"; // Changes all values of last_import in table to N
$result = @mysql_query($query) or die (mysql_error());
$query = "INSERT command here"; // do your inserting, while inserting the rows, put Y as the value of the last_import.
然后在您的最终检查文件中:
$query = "SELECT * FROM thetable WHERE last_import = 'Y'"; // Selects all that was last imported
// Process the query here
那应该行得通。
更新:感谢 Gavin 的建议(感谢 Gavin!)我还建议使用时间戳值。这将像这样工作:
你的桌子会是这样的:
-------------------------------
| id | name | last_import |
-------------------------------
| 1 | Simon | 1346748315 |
-------------------------------
| 2 | Richard| 1346748315 |
-------------------------------
| 3 | Jon | 1346748315 |
-------------------------------
在您的插入查询中:
// Process data before here
$currenttimestamp = time();
$query = "INSERT command here"; // do your inserting, while inserting the rows, put $currenttimestamp as the value of the last_import.
并且在选择时:
$query = "SELECT last_import FROM thetable ORDER BY last_import DESC LIMIT 1"; // Selects the most recent timestamp
$result = @mysql_query($query) or die (mysql_error());
$mostrecenttstmp = @mysql_result($result, 0);
$query = "SELECT * FROM thetable WHERE last_import = '$mostrecenttstmp'";
// Process the query here