2012-11-01 39 views
-2

1)我有以下(包括)從我的數據庫(phprealty)與兩個聯合表(phprealty_propert + phprealty_prop_img)顯示隨機記錄。代碼工作沒有任何問題。但是,當我將限制設置爲3時,我得到2條記錄,這就是爲什麼我將限制設置爲4以便獲得3條記錄。我可以按原樣離開嗎?PHP * RAND()LIMIT x,y

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

您正在返回4行有,但第一行用於$ row變量,其餘的都在$ 2行變量使用。 ORDER BY RAND()也是非常低效的操作,除非絕對必要,通常應該避免。 – CodePB

+0

感謝您的回覆。但是當我將它限制爲6時,我得到了6. – Omar

+0

也許我錯過了一些東西,然後限制0,4應該返回4行。 – CodePB

回答

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。

希望它能幫助,

+0

太棒了!它的工作就像一個魅力!但是,我不必在'$ myConnection'和'$ sqlCommand'之間切換。非常感謝 :) – Omar

相關問題