Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment boucler une requête mysql avec php

Voici le modèle de base pour ce genre de chose, en utilisant des fonctions php intégrées (en supposant que mysql à l'ancienne, mais similaire en utilisant d'autres back-ends de base de données ou des bibliothèques de niveau supérieur). Dans cet exemple, les erreurs sont gérées en levant des exceptions, mais ce n'est qu'une façon de procéder.

  1. Se connecter à la base de données
  2. Assurez-vous que la connexion a réussi
  3. Exécuter la requête
  4. Assurez-vous que la requête n'a pas échoué pour une raison quelconque (généralement une erreur de syntaxe SQL). Si cela a échoué, découvrez pourquoi et gérez cette erreur
  5. Vérifiez que la requête a renvoyé au moins une ligne (zéro ligne est généralement un cas particulier)
  6. Boucle sur les lignes renvoyées, en faisant ce que vous devez faire.

Les classes d'exception doivent être définies (il s'agit de la seule syntaxe non intégrée ici, mais vous ne devez pas lancer d'exceptions standard).

Exemple de code :

<?PHP
//try to connect to your database.
$conn = mysql_connect(...);

//handle errors if connection failed.
if (! $conn){
    throw new Db_Connect_Error(..); 
}   

// (try to) run your query.
$resultset = mysql_query('SELECT ...');

//handle errors if query failed.  mysql_error() will give you some handy hints.
if (! $resultset){ 
    // probably a syntax error in your SQL, 
    // but could be some other error
    throw new Db_Query_Exception("DB Error: " . mysql_error()); 
}

//so now we know we have a valid resultset

//zero-length results are usually a a special case    
if (mysql_num_rows($resultset) == 0){   
    //do something sensible, like tell the user no records match, etc....
}else{
    // our query returned at least one result. loop over results and do stuff.
    while($row = mysql_fetch_assoc($resultset)){
        //do something with the contents of $row
    }
}