php и mysql первичный ключ - PullRequest
1 голос
/ 29 мая 2010

У меня есть одна простая таблица. имя столбца первичного ключа - id. У меня есть почти 200 записей и некоторые, как я удалил некоторые записи. Теперь в столбце id есть следующие записи

1
2
4
5
6
8
9

Может ли кто-нибудь сказать мне, какой запрос я могу написать, чтобы вернуть мне все пропущенные строки? Например, 3,7 строки в приведенном выше примере. Или любая функция PHP, которая делает это?

1 Ответ

2 голосов
/ 29 мая 2010
<?php

// CONNECT TO YOUR DB

$missingRecords = array(); //<-- array you'll store your missing records
$resultsArray = array(); //<-- log the good results
$count = 0;
$lastResult = 0;    

$query = "SELECT * FROM `your_table`";
$results = mysql_query($query);

// populate the results array with your existing id #'s
while($data = mysql_fetch_assoc($results)){
   array_push($resultsArray,$data['id']);
   $lastResult = $data['id'];
}


// cross check the id number with the iterator.  if no matches come up push the missing array
for($i=0;$i<$lastResult;$i++){
    if(cross_check($resultsArray[$i])){
        $count++;
    }else{
        array_push($missingRecords, $count); 
        $count++;
    }
}

// function to cross check iterator and result array id number
function cross_check($id){
    global $count;
    global $resultsArray;
    for($i=0;$i<count($resultsArray);$i++){
        if($resultsArray[$i] == $count){
            return true;
        }
    }
    return false;
}

// print out the missing records
for($i=1;$i<count($missingRecords);$i++){
    echo 'Missing Record: ' . $missingRecords[$i] . '<br>'; 
}

?>
...