Are there times when your PHP will pull a large result set back from MySQL, or have to make a large number of queries, just to further process the data into a relatively small dynamic section of a report? If so, why not have the MySQL do more of the work and return a much shorter, more processes results to the PHP? You can do this with an appropriate stored procedure.
On yesterday's
MySQL course I wrote a series of stored procedure examples ... the "abc" of stored procedures, if you like - there are complete books on the topic! Let's see the results - follow the links if you want to see the code.

This is a very simple stored procedure ... a 'macro' that lets a simple query -
call otc() embedded in your mysqli query method - run a more complex piece of SQL within the MySQL daemon.
See
MySQL stored procedure definition and
PHP source code

Rather than return just a single value, this example returns a complete table of results - in our PHP, we've loped through those results and displayed them in a browser.
See
MySQL stored procedure definition and
PHP source code

You'll want to pass a parameter into your stored procedures ... this example shows how ...
See
MySQL stored procedure definition and
PHP source code

Our final example in this set shows variables, conditionals, loops, a cursor and more ... we've passed back just a single value - kicked back to us by a rather different use of select to what you're used to.
See
MySQL stored procedure definition and
PHP source code
The data that we seeded the tables with is
here, and the same data as a mysqldump file is
here (written 2009-10-10)
20ef
Associated topics are indexed under
S163 - Stored Procedures in MySQL [2749] Delegate Question - defining MySQL table relationships as you create the tables - (2010-05-02)
[2446] Learn about MySQL stored procedures - (2009-10-09)
H113 - Using MySQL Databases in PHP Pages [3455] MySQL, MySQLi, PDO or something else - how best to talk to databases from PHP - (2011-09-24)
[3035] How to display information from a database within a web page - (2010-11-07)
[2628] An example of an injection attack using Javascript - (2010-02-08)
[2561] The future of MySQL - (2010-01-03)
[2432] Using print_r in PHP to explore mysql database requests - (2009-10-01)
[2320] Helping new arrivals find out about source code examples - (2009-08-03)
[2259] Grouping rows for a summary report - MySQL and PHP - (2009-06-27)
[2071] Setting up a MySQL database from PHP - (2009-03-08)
[1983] Keeping PHP code in database and running it - (2009-01-09)
[1561] Uploading to a MySQL database through PHP - examples and common questions - (2008-03-02)
[1010] Dates, times, clickable diarys in PHP - (2006-12-28)
[947] What is an SQL injection attack? - (2006-11-27)
[937] Display an image from a MySQL database in a web page via PHP - (2006-11-22)
[915] Paging through hundreds of entries - (2006-11-05)
[723] Viewing images held in a MySQL database via PHP - (2006-05-17)
[666] Database design - get it right from first principles - (2006-04-02)
[647] Checking for MySQL errors - (2006-03-15)
[581] Saving a MySQL query results to your local disc for Excel - (2006-01-29)
[572] Giving the researcher power over database analysis - (2006-01-22)
[515] MySQL - an FAQ - (2005-12-03)
[104] mysql_connect or mysql_pconnect in PHP? - (2004-10-30)
Some other Articles
Gypsy saysFamily Gathering at 404, The SpaFour aspects - Chamber, Transport, Courses and HotelMySQL - efficiency and other topicsMySQL stored procedures / their use on the web from PHPSecuring MySQL on a production serverPotted MySQL installationContrasting Cambridge, Bristol and WiltshireVariable storage - Perl, Tcl and Python compared