sql >> Database >  >> RDS >> Mysql

Hoe loop ik door een mysql-query met php

Hier is de basissjabloon voor dit soort dingen, met behulp van ingebouwde php-functies (uitgaande van mysql in oude stijl, maar vergelijkbaar met andere database-back-ends of bibliotheken op een hoger niveau). In dit voorbeeld worden fouten afgehandeld door uitzonderingen te genereren, maar dat is slechts één manier om het te doen.

  1. Verbind met de database
  2. Controleer of de verbinding is gelukt
  3. Voer de zoekopdracht uit
  4. Zorg ervoor dat de query niet om de een of andere reden is mislukt (meestal een SQL-syntaxisfout). Als het niet is gelukt, zoek dan uit waarom en behandel die fout
  5. Controleer of de zoekopdracht ten minste één rij heeft geretourneerd (nul rijen is meestal een speciaal geval)
  6. Loop over de geretourneerde rijen en doe wat u maar wilt.

De uitzonderingsklassen moeten worden gedefinieerd (ze zijn de enige niet-ingebouwde syntaxis hier, maar u moet geen gewone uitzonderingen gebruiken).

Voorbeeldcode:

<?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
    }
}


  1. Verhindert SELECT FOR UPDATE dat andere verbindingen worden ingevoegd wanneer de rij niet aanwezig is?

  2. mysql telt hoe vaak het ene veld naar het andere linkt

  3. Fuzzy matchen met een string in SQL

  4. Hoe controleer ik of een kolom bestaat voordat deze wordt toegevoegd aan een bestaande tabel in PL/SQL?