0

好吧,我有一个脚本可以处理一些数据,然后将其导入 mysql 数据库。

然后,我还有另一个脚本,它处理一些其他数据,然后它也将其导入 mysql 数据库。

我想做的事:

我想用第三个脚本来控制(例如,查看最后导入了多少行)仅使用最后一个脚本导入的行。不是这些由第一个导入的(但我不希望删除第一个导入的行以仅包含最后导入的行)。

MySQL或PHP中有什么方法吗?

如果我不清楚某事告诉我。

先感谢您!

4

1 回答 1

1

您总是可以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
于 2012-09-04T07:14:08.360 回答