sql >> Databasteknik >  >> RDS >> Mysql

Hur går jag igenom en mysql-fråga med php

Här är den grundläggande mallen för den här typen av saker, med hjälp av inbyggda php-funktioner (förutsatt gammaldags mysql, men liknande med andra databasbackends eller högre nivåbibliotek). I det här exemplet hanteras fel genom att skapa undantag, men det är bara ett sätt att göra det.

  1. Anslut till databasen
  2. Se till att anslutningen lyckades
  3. Kör frågan
  4. Se till att frågan inte misslyckades av någon anledning (vanligtvis ett SQL-syntaxfel). Om det misslyckades, ta reda på varför och hantera det felet
  5. Kontrollera att frågan returnerade minst en rad (noll rader är vanligtvis ett specialfall)
  6. Slinga över de returnerade raderna och gör vad du än behöver göra.

Undantagsklasserna skulle behöva definieras (de är den enda icke-inbyggda syntaxen här, men du bör inte kasta vanilj-undantag).

Exempelkod:

<?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. MySQL-resultat som kommaseparerad lista

  2. postgres dödläge utan explicit låsning

  3. Hur använder man Django med äldre skrivskyddade databastabeller med sammansatta primärnycklar?

  4. Registrering av användare genom servletfel