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 変数を印刷しようとしましたが、空または空の配列のようです。何が間違っているのか少し戸惑い、アイデアを得たいと思っています。

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 に答える