2013-03-12 3 views
2

왜 내 코드가 작동하지 않는지 이해할 수 없습니다. 연결이 작동하고 다른 모든 것들이 있지만 난수를 생성하면 고유 한 난수를 생성하고 MySQL에서 확인하면 숫자가 여전히 난수를 인쇄하지만 고유하지는 않습니다. 누구든지 나를 도울 수 있을까?PHP에서 고유 한 난수를 생성하는 MySQL

$num = rand(1,5); 
$sel_query = "SELECT * FROM test"; 
$result2 = $con->query($sel_query); 

$i = 1; 
for (;$i<2; $i++) 
{ 
    while($row = mysqli_fetch_array($result2)) 
    { 
     if ($row['id'] == $num) 
     { 
      $num = rand(1,5); 
      $i = 0; 

     } 
    } 
} 
+0

는 랜드의 열 무엇을 번호를 DB에서 당신은 단순히 루핑 대신 그것을 검색 할 수 있습니다 ... –

+0

그게 내가 뭘 하려는지 알지는 작동하지 않습니다. – user2138160

+0

이것은 당신을 도울 것입니다 : http://stackoverflow.com/ questions/8834493/how-generate-unique-random-number-in-php –

답변

1

이 작동합니다 :

$is_unique = false; 
$num = false; 
while (!$is_unique){ 
    $num = rand(1,5); 
    $sel_query = "SELECT id from test where id = " . $num; 
    $result2 = $con->query($sel_query) or die($conn->error); 
    if (!mysqli_fetch_array($result2)){ 
     $is_unique = true; 
    } 
} 
echo "Unique number is " . $num; 

을하지만 더 이상 가능한 고유 번호가없는 경우,이 루프는 영원히 것이다 다음은 내 코드입니다.

+0

경고 : mysqli_fetch_array()는 매개 변수 1이 mysqli_result가 될 것으로 예상하고, 부울은 – user2138160

+0

으로 주어진다. 오류가있다. 나는 그것을 편집했고, 지금 시도한다, 그것은 오류를 출력해야한다. – Jodes

0

나는 이것이 약간 오래된 것을 알고 있지만, 비슷한 대답이 필요하다가이 질문을 발견했다. 나는 Jodes의 답변을 촬영하고 영원히 실행되지 않도록, 약간 업데이트, 수를 반환하는 함수이며, $ mysqli로 mysqli 연결을 수락했습니다

function getUniqueNumber($mysqli) 
{ 
    $is_unique = false; 
    $num = false; 
    $times_run = 0; 
    while (!$is_unique) 
    { 
     if($times_run > 10) 
     { 
      echo "Run too many times, dying."; 
      die(); 
     } 
     $num = rand(1,5); 
     $sel_query = "SELECT id from test where id = " . $num; 
     $result2 = $mysqli->query($sel_query) or die($mysqli->error); 
     if (!mysqli_fetch_array($result2)) 
     { 
      $is_unique = true; 
     } 
     $times_run++; 
    } 
    return $num; 
} 
관련 문제