2010-05-29 6 views
1

J'ai une table simple. le nom de la colonne de clé primaire est id. J'ai presque 200 enregistrements et certains comment j'ai supprimé certains des enregistrements. Maintenant, la colonne id a des entrées suivantesphp et clé primaire mysql

1 
2 
4 
5 
6 
8 
9 

tout organisme peut me dire ce que la requête puis-je écrire qui me retourner toutes les lignes manquantes? Par exemple 3,7 lignes dans l'exemple ci-dessus. Ou toute fonction PHP qui fait cela?

+0

Puis-je demander * pourquoi * voulez-vous faire cela? –

+0

Je veux voir quels enregistrements j'ai supprimé par erreur. Je ne peux pas voir chaque ligne car il y a plus de 200 enregistrements :( – user238384

+0

@agazerboy: Ah ok je l'ai eu Je ne voyais pas que vous ne vouliez pas supprimer les enregistrements ... –

Répondre

2
<?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>'; 
} 

?> 
+0

génial!!! il a fait mon la vie FACILE!!! merci – user238384

+0

:) heureux d'aider –