2014-02-17 3 views
2

$ 키가 데이터베이스에 있는지 확인하고 새로운 키를 작성하고 다시 확인하는 while 루프를 만들어야합니다. 그것은 코드의 쉬운 부분처럼 보이지만 작동하지 않습니다.값이 테이블 루프 쿼리에 존재하지 않을 때까지

나는 인터넷 검색을 해왔지만 몇 시간 동안은 다른 솔루션을 시도했지만 운이 없었습니다.

$key = 'aa';//RandomString(30); 
$result = mysql_query("SELECT column FROM table WHERE column = '$key'"); 

$j = 1; 
while(mysql_num_rows($result)==1){ 
    $key = 'aa'.$j;//RandomString(30); 
    $j++; 
} 

답변

4

당신은 while 루프 내부의 mysql_query();을 포함해야합니다. 현재 mysql 데이터베이스가 한 번만 질의 될 때마다 동일한 결과를 확인하고있다. 당신이 mysqli 또는 PDO로 마이그레이션하는 것을 시도해야하므로

$key = 'aa';//RandomString(30); 

$j = 1; 
$found = true; 
while($found == true){ 
    $result = mysql_query("SELECT column FROM table WHERE column = '$key'"); 
    if(mysql_num_rows($result)==0) { 
     $found = false; 
    } else { 
     $key = 'aa'.$j;//RandomString(30); 
     $j++; 
    } 
} 

참고로, mysql_ 기능이 사용되지 않습니다.

또한이 상황에서 aa으로 시작하는 항목이 많으면 비효율적입니다. aa으로 시작하는 모든 항목을 찾은 다음 마지막 항목을 찾고 번호를 하나씩 늘리는 것이 더 나을 수 있습니다. 그렇게하면 수백 또는 수천 개가 아닌 하나의 쿼리로이 작업을 수행 할 수 있습니다.

+0

고맙습니다. if 문없이 시도 했으므로 2 번만 반복되었습니다. 하지만 이제는 효과가 있습니다! 여전히 im을 사용하는 이유는 im이 강제되기 때문입니다. – Darloz

관련 문제