0

我正在使用 PHP 和 MySQL 构建一个脚本,以将某个实时页面与旧版本进行比较——我通过 md5 对其进行哈希处理并将其与最新版本进行比较。

现在我正在尝试使用以下内容提取某个页面的最新已知哈希:

SELECT latest_hash FROM tracked_sites WHERE domain = 'domain.com

这向我显示了某个“domain.com”的 latest_hash 的实际内容现在我试图将它放入一个有效的变量中,以便我可以使用以下内容进行比较:

$latestmd5_sql=(mysqli_query($con,"SELECT latest_hash FROM tracked_sites WHERE domain = 'domain.com'"));

现在,我想我有数据库的实际内容,我试图与之进行比较

if ((md5(file_get_contents("https://domain.com/page.html")))==$latestmd5_sql)

但是,由于某种原因,我得到 False 作为答案。我尝试使用 echo 或 print_r 打印出 $latestmd5_sql var,但它似乎是空数组或空数组,我对自己做错了什么感到有点困惑,并且很想得到想法。

4

1 回答 1

0

在您提供的代码中,$latestmd5_sql将是资源,而不是数据库中的值。
您需要从资源中“获取”数据以比较值。

这是一个示例来说明从 sql 代码到 php 变量的工作流程:

// your sql
$sql="SELECT latest_hash FROM tracked_sites WHERE domain = 'domain.com'";

// the query (returns a resource)
$query = mysqli_query($con,$sql);

// fetch the resulting data (this is the part you're missing)
$result=mysqli_fetch_assoc($query);

// take a look at the data (for debugging purposes)
echo"DATA:<pre>".print_r($result,true)."</pre>";

// compare
if ((md5(file_get_contents("https://domain.com/page.html")))==$result['latest_hash']) {
  echo"<p>Match</p>";
} else {
  echo"<p>No Match</p>";
}
于 2013-10-23T20:20:20.390 回答