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.
- Anslut till databasen
- Se till att anslutningen lyckades
- Kör frågan
- 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
- Kontrollera att frågan returnerade minst en rad (noll rader är vanligtvis ett specialfall)
- 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
}
}