Vérifier la clé primaire dans la base!

Résolu
S'il vous plait, aidez-moi à palier à ce problème:
Désolé, ce matricule existe déja dans la base!
Warning: mysql_fetch_array(): 5 is not a valid MySQL result resource in C:\Program Files (x86)\EasyPHP-5.3.9\www\Sites\InsertEtudiant.php on line 65
Erreur SQL !INSERT INTO 'etudiant'('matricule', 'nom', 'prenom', 'datenaiss', 'lieunaiss', 'contact') VALUES("5863H","DOH","Joel","1990-09-10","Tabou","05132413")
Aucune base n'a été sélectionnée

Voici le code dont on fait reférence:
<?php
		       //On se connecte
		    connectToDB() ;
		   
		       //On prépare la requête
		    $sql = 'SELECT * FROM etudiant' ;
		 
		       // On lance la requête (mysql_query) et on impose un message d'erreur si la requête ne se passe pas (or die)
		    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error()) ;
			
		       // Au fait ces lignes nous permettrons de verifier si l'étudiant ajouté
		       // ne figure pa deja dans la base.
		       //Boucle
		    while ($data = mysql_fetch_array($req))
		    {
		        $verif = $data['matricule'] ;
		        if($verif == $matricule)
			    {
			        echo'<span style="color:#ff0000;"> Désolé, ce matricule existe déja dans la base! </span>' ;
				 
				       //On libère la mémoire mobilisée pour cette requête dans sql!
				    mysql_free_result($req) ;
				  
				       // On ferme sql
				    mysql_close() ;
					
					$form = true ;
			    }
				else
				{
				    continue ;
				}
		    }
		       //On prépare la commande sql d'insertion
		    $sql = 'INSERT INTO 'etudiant'('matricule', 'nom', 'prenom', 'datenaiss', 'lieunaiss', 'contact') VALUES("'.$matricule.'","'.$nom.'","'.$prenom.'","'.$datenaiss.'","'.$lieunaiss.'","'.$contact.'")' ;
		 
		     /*on lance la commande (mysql_query) et au cas où,
		       on rédige un petit message d'erreur si la requête ne passe pas (or die)
		       (Message qui intègrera les causes d'erreur sql)*/
		    mysql_query ($sql) or die ('Erreur SQL !'.$sql.'<br />'.mysql_error());
		 
		       // on ferme la connexion
		    mysql_close() ;
		 
		    echo("Insertion reussie!") ;
			$form = false ;
?>

2 réponses

  1. Salut !

    Matricule est une clé primaire, cela veut dire que tu nepeux pas avoir deux fois le même.
    Et donc à un moment tu essayes d'ajouter une ligne où le matricule existe déjà donc erreur
    1. ok! merci!
      j'ai eu une ligne de code sur un site qui résolu le problème. et la voici:
      $sql = mysql_num_rows(mysql_query('SELECT * FROM etudiant where matricule="'.$matricule.'"')) ;

      Comme ça je suis dans la table sans que j'utilise une boucle tantque.