2013-04-19 13 views
3

페이지가로드 될 때마다 3 개의 임의 값을 표시하는 방법은 무엇입니까?MYSQL 테이블에서 3 개의 무작위 값을 표시하는 방법

<?php 
$sSQLQuery = "SELECT careername FROM careers ORDER BY RAND() LIMIT 1"; 
$aResult = mysql_query($sSQLQuery); 
$aRow = mysql_fetch_array($aResult, MYSQL_ASSOC); 
$sQuoteOfTheDay = $aRow['careername']; 
echo $sQuoteOfTheDay; 
?> 

내가 LIMIT 5 일을 시도했지만 그 결과에 영향을 미치지 않았다 : 분에서 나는 다음과 같은 코드를 사용하여 한 번에 한을 표시해야합니다. 감사합니다

답변

1

당신이 가져 오는 모든 단일 레코드에 대해 다시 mysql_fetch_assoc()으로 전화해야합니다.

따라서 LIMIT 3을 사용하고 결과 세트를 반복하면됩니다. 이와 같이 :

$sSQLQuery = "SELECT careername FROM careers ORDER BY RAND() LIMIT 3"; 
$aResult = mysql_query($sSQLQuery); 
while($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC)) { 
    $sQuoteOfTheDay = $aRow['careername']; 
    echo $sQuoteOfTheDay; 
} 

mysql_fetch_assoc()의 매뉴얼 페이지를 참조하십시오. 거기에 더 많은 예제가 있습니다.

+0

감사합니다 - 그 것이었다 :) –

+1

당신은 환영합니다! ;) mysql_ * 확장자는 PHP 개발자가 사용하지 않는 것으로 표시되어 있습니다. 따라서 코드에서이 함수를 사용하는 것은 권장하지 않습니다. ['PDO'] (http://www.php.net/manual/en/book.pdo.php) 또는 ['mysqli_ *'] (http : //de3.php. net/manual/ko/book.mysqli.php) – hek2mgl

0

올바른 길을 가고 있습니다. 모든 결과를 통해 LIMIT '3'에 다음 루프를 변경합니다

while ($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC)) { 
    echo $aRow['careername']; 
} 
0

당신은 LIMIT 3을 변경하고 결과 행을 반복하여야한다.

$sSQLQuery = "SELECT careername FROM careers ORDER BY RAND() LIMIT 3"; 
$aResult = mysql_query($sSQLQuery); 
while ($aRow = mysql_fetch_array($aResult, MYSQL_ASSOC)) 
{ 
    $sQuoteOfTheDay = $aRow['careername']; 
    echo $sQuoteOfTheDay; 
} 
$aResult->free(); 

끝에 $aResult을 잊지 마세요.

0

ORDER BY RAND() LIMIT n은 호러 수행 킬러입니다. 에 대해 개의 행을 계산하고 가장 많이 버립니다. 이것이 백만 행을 가진 테이블에 대해 무엇을하는지 상상해보십시오.

이 작업을 수행하는 가장 좋은 방법은 행 개수 (예 : SELECT COUNT(*) FROM tablename; 실행)를 얻은 다음이 값을 사용하여 세 개의 색인을 계산 한 다음 SELECT * FROM tablename ORDER BY primarykey LIMIT $index,1을 세 번 실행하는 것입니다.

CPU 바인딩 서버에서이 경우에도 break가 ca. 100 줄!

관련 문제