Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP检查mysql数据库的更改_Php_Mysql_Arrays - Fatal编程技术网

使用PHP检查mysql数据库的更改

使用PHP检查mysql数据库的更改,php,mysql,arrays,Php,Mysql,Arrays,我正在创建一个新的web应用程序,我只想在数据库发生更改时更新某些表,这将通过在JavaScript setInterval中启动PHP脚本来完成 我的问题是,我很难找到一种方法来轻松确定数据库表中的某些行是否已更改。在其他情况下,我使用了“ShowTableStatus”,并将其与我已经存储的上次更新时间进行了比较 但在本例中,我不想查看整个表,我只需要知道查询中的行是否已更改。我最初尝试md5数组,以及md5数组的序列化。它们似乎都不起作用,每次都返回相同的md5哈希 例如,以下是我的查询:

我正在创建一个新的web应用程序,我只想在数据库发生更改时更新某些表,这将通过在JavaScript setInterval中启动PHP脚本来完成

我的问题是,我很难找到一种方法来轻松确定数据库表中的某些行是否已更改。在其他情况下,我使用了“ShowTableStatus”,并将其与我已经存储的上次更新时间进行了比较

但在本例中,我不想查看整个表,我只需要知道查询中的行是否已更改。我最初尝试md5数组,以及md5数组的序列化。它们似乎都不起作用,每次都返回相同的md5哈希

例如,以下是我的查询:

$getUserTable = mysql_query("select * from uct_admin.resources where teamID='62' order by ResourceName");
我在阅读答案后提出的解决方案:

$getUserTable = mysql_query("select * from uct_admin.resources where teamID='62' order by csiname");
while ($row = mysql_fetch_assoc($getUserTable)) {
    $arrayTest[] = $row;
}
$hash = md5(http_build_query($arrayTest, 'flags_'));

由于查询返回的嵌套数组,这是完美的。

< P>我会考虑添加一个附加的<代码>时间戳<代码>字段到在代码>更新/插入/代码>上更新的表中,然后你可以检查<代码>选择max(LaSTAdvestor),其中TeSIDID=62


如果你不想改变表结构,你可以在这个表中添加一个触发器,并在一个单独的表中记录每个组数据的最后更改。

< P>我会考虑在代码< >更新/插入/代码>更新的表中添加一个附加的<代码>时间戳<代码>字段,然后你可以检查<代码>选择max。(上次修改)其中teamID=62


如果不想更改表结构,可以在此表中添加一个触发器,并让它在单独的表中跟踪每个团队数据的上次更改。

我将创建一个表来记录所有更改,称为dbLogTable.ID(外键)时间戳将是它的列。每次PHP脚本运行时,使用
truncate table dbLogTable
清除该表。PHP脚本可以通过运行
COUNT(*)检测任何更改从dbLogTable
,如果没有更改,则为零,如果有更改,则为非零。然后可以通过外键ID访问所有更改


免责声明:在DB工作方面,我是一个noob,所以虽然我可能会这样做,但这可能不是最好的方法。

我会创建一个表来记录所有更改,称为dbLogTable.ID(外键)时间戳将是它的列。每次PHP脚本运行时,使用
truncate table dbLogTable
清除该表。PHP脚本可以通过运行
COUNT(*)检测任何更改从dbLogTable
,如果没有更改,则为零,如果有更改,则为非零。然后可以通过外键ID访问所有更改

免责声明:对于DB工作,我是一个noob,所以虽然我可能会这样做,但这可能不是最好的方法。

(除非有特殊原因,否则我会选择James的解决方案)

我做了类似的事情,并设法使您提到的哈希解决方案工作正常。从不同的数据中获得相同的哈希将非常奇怪

在我的代码中,我对数组执行内爆操作,而不是序列化。然后,我将哈希存储在数据库中,当我想将一组新数据与之进行比较时,我对新数据运行md5,并将其与哈希进行比较

如果它仍然不起作用,我们可以看看你的哈希代码和一些示例数据吗?我很想知道如果这个方法不起作用会发生什么。

(我会选择James的解决方案,除非你有特殊原因不能这样做)

我做了类似的事情,并设法使您提到的哈希解决方案工作正常。从不同的数据中获得相同的哈希将非常奇怪

在我的代码中,我对数组执行内爆操作,而不是序列化。然后,我将哈希存储在数据库中,当我想将一组新数据与之进行比较时,我对新数据运行md5,并将其与哈希进行比较


如果它仍然不起作用,我们可以看看你的哈希代码和一些示例数据吗?我很想知道如果这个方法不起作用会发生什么。

我不确定我是否完全理解你的用例,但是你是否考虑过日志记录表?我不确定我是否完全理解你的用例,但是你是否考虑过日志记录表?虽然我喜欢James的想法,在本例中,您将我发送到解析路径。基本上,一旦您从DB获得数组,就可以在http_build_查询中运行md5($array,'flags'))这个解决方案在短期内更容易实现,而且效果也很好。虽然我喜欢James的想法,但在这种情况下,你让我走上了解决问题的道路。基本上,一旦你从DB获得数组,就在http_build_查询($array,'flags')上运行md5这个解决方案在短期内更容易实现,而且效果非常好。