while 반복중 중복되는 값을 제거하고자 합니다. 채택완료
한번에 100개의 6자리 랜덤난수를 생성하기위해
while 문을 통해 반복 시켰습니다.
1회 반복 후 DB에 있는 100개의 값과 2회차 while 문의 생성 랜덤난수를 비교하여
중복된 값이 있을 경우 멈추는 것이 아닌 중복된 값을 빼고 100개를 생성하여 DB에 입력하려고 합니다.
</p>
<p>do {</p>
<p> $rand_num = srand((double)microtime()*1000000); // 등등 랜덤난수 function 을 만들어서 영어대문자와 숫자 조합으로 만들고 있습니다.</p>
<p> $sql = "select count(*) as cnt from g5_test where rand_num = '{$rand_num}' ";</p>
<p> $row = sql_fetch($sql);</p>
<p> $rand_list[$rand_num] = $rand_list;</p>
<p> </p>
<p> if($row['cnt']) break; // DB에 있으면 멈춤</p>
<p> </p>
<p>} while (count($rand_list) < 100);</p>
<p> </p>
<p>foreach($rand_list as $rand) {</p>
<p> $sql_insert; // DB에 입력</p>
<p>}
코드를 작성하여 테스트 중입니다.
어떻게 하면 중복값에서 멈추지 않고 매 실행 시 마다 중복값을 제외한 후 100개씩 딱 떨어지게 나올 수 있을까요?
도저히 머리가 굴러가지 않아 폭풍 검색 하다 질문 남깁니다.
감사합니다.
답변 3개
do { $rand_num = srand((double)microtime()*1000000); $sql = "select count(*) as cnt from g5_test where rand_num = '{$rand_num}' "; $row = sql_fetch($sql); if ($row['cnt'] == 0) $rand_list[] = $rand_num; } while (count($rand_list) < 100); foreach($rand_list as $rand) { $sql_insert; }
댓글을 작성하려면 로그인이 필요합니다.
두 분 모두 답변 감사합니다.
균이님의 코드의 경우는 DB에 있는것과는 비교 할 수 없는거죠? 2회차 3회차 등 계속 다회차 작성할 경우 매번 100개씩만 새로 만드시는 방법인건가요?
댓글을 작성하려면 로그인이 필요합니다.
테이블에 먼저 등록된 값을 100번이나 체크할 이유는 없습니다
아래 코드로 하세요
$numArr = range(100000, 999999);//6자리 숫자 전부를 배열에 담으세요 shuffle($numArr); //----배열을 흔들어 주세요
$newArr = array_slice($numArr, 0,100); //100개만 잘라오세요
$numStr ='('. implode("),(", $newArr).')'; //테이블에 기록시 한번에 등록 하도록 합치세요
<span class="token variable">$insert_qry </span>="insert into Tablek (wr_1) values $numStr ";</p>
<p>sql_query(<span class="token variable">$insert_qry </span>); //insert 쿼리는 한번만 하면 됩니다</p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인