2012-11-01 4 views
-2

1) 데이터베이스 (phprealty_propert + phprealty_prop_img)가 두 개인 테이블을 사용하여 db (phprealty)의 임의의 레코드를 표시하려면 아래를 포함하십시오. 코드는 문제없이 작동합니다. 그러나 한도를 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 개 행을 반환하는, 희망은 도움이되지만 첫 번째 행은 $ 행 변수에 사용되며, 나머지는 $의 ROW2 변수에 사용됩니다. ORDER BY RAND()는 매우 비효율적 인 연산이기 때문에 절대적으로 필요한 경우가 아니면 일반적으로 피해야합니다. – CodePB

+0

답장을 보내 주셔서 감사합니다. 하지만 6으로 제한하면 6이됩니다. – Omar

+0

어쩌면 내가 누락 된 부분이있을 수 있습니다. LIMIT 0,4는 4 개의 행을 반환해야합니다. – CodePB

답변

1

그냥

$row = mysqli_fetch_array($result); 

다음

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

으로이 두 줄

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

을 변경, 삭제 및 동안 상태 전후에 라인을 넣어 ment.

$ id이 변경되지 않으므로 지금 귀하의 코드에서 display.php는 항상 동일한 코드를 표시합니다.

코드가 제대로 작동합니까? mysqli_query의 첫 번째 매개 변수는 $ sqlCommand이 아니고 $ myConnection이 아니어야합니다.

가능한 경우 Mysql에서 root/empty_password를 사용하지 마십시오.

+0

Wonderful! 그것은 매력처럼 작동합니다! 그러나, 나는'$ myConnection'과'$ sqlCommand' 사이를 전환 할 필요가 없었습니다. 고마워요 :) – Omar