PHP * RAND()LIMIT x,y

时间:2012-11-01 10:22:22

标签: php mysql mysqli

1)我有以下(include)来显示我的db(phprealty)中的随机记录和两个联合表(phprealty_propert + phprealty_prop_img)。代码工作没有任何问题。但是,当我将限制设置为3时,我得到2条记录,这就是为什么我将限制设置为4所以我得到3条记录。我可以保留原样吗?

2)由于我是PHP的新手,你认为这段代码是否易受攻击,因此需要某种保护?如果是这样,请告知在使用PHP显示数据时如何保护网页。

提前谢谢。

<?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>';
 }

1 个答案:

答案 0 :(得分:1)

删除

$row = mysqli_fetch_array($result);

然后更改这两行

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

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

并在之后将两行放在语句中。

在您的代码中,display.php将始终显示相同的代码,因为 $ id 不会更改。

您的代码是否正常运行? mysqli_query上的第一个参数应该是 $ sqlCommand ,而不是 $ myConnection

如果可以的话,尽量不要在Mysql上使用root / empty_password。

希望它有所帮助,