-2

1)2つのユニオンテーブル(phprealty_propert + phprealty_prop_img)を使用して、データベース(phprealty)からランダムなレコードを表示するために、以下(インクルード)があります。コードは問題なく動作しています。ただし、制限を 3 に設定すると 2 つのレコードが取得されるため、制限を 4 に設定して 3 つのレコードを取得します。そのままにしておきましょうか?

2) 私は PHP を初めて使用するので、このコードは脆弱であり、何らかの保護が必要だと思いますか? その場合、PHP を使用してデータを表示する際に Web ページを保護するために何をすべきかアドバイスしてください。

前もって感謝します。

<?php
$pid = 3;
$myConnection = new mysqli("localhost", "root", "", "phprealty");
$sqlCommand = "SELECT phprealty_property.*, phprealty_prop_img.p_id, phprealty_prop_img.fn FROM phprealty_property INNER JOIN phprealty_prop_img ON phprealty_property.id = phprealty_prop_img.p_id WHERE phprealty_prop_img.def='1' AND phprealty_property.type = $pid"; 
$query = mysqli_query($myConnection, $sqlCommand) or die (mysqli_error());

$sqlCommand .= " ORDER BY RAND() LIMIT 0,4";
$result = mysqli_query($myConnection, $sqlCommand);

$Displayproperty = '';
$row = mysqli_fetch_array($result);
$id = $row["id"];
$title = $row["title"];
while ($row2 = mysqli_fetch_array($result)){
$img = $row2["fn"];
$thumb = 'th_' . $img;
$Displayproperty .= '
<div class="random">
<a href="display.php?id=' . $id . '"><img src="../falcon/listImgs/' . $thumb . '" />   </a></div>';
 }
4

1 に答える 1

1

削除するだけ

$row = mysqli_fetch_array($result);

次に、これらの2行を変更します

$id = $row["id"];
$title = $row["title"];

の中へ

$id = $row2["id"];
$title = $row2["title"];

whileステートメントの後に両方の行を追加します。

現在のコードでは、 $idが変更されないため、display.php は常に同じコードを表示します。

あなたのコードは正しく動作していますか? mysqli_query の最初のパラメーターは、 $myConnectionではなく、$sqlCommandにする必要があります。

可能であれば、Mysql で root/empty_password を使用しないようにしてください。

それが役に立てば幸い、

于 2012-11-01T22:29:11.457 に答える