Before and After: Making Multiple Queries

In PHP 4, when you need to make more than one query in a row, you’re forced to call mysql_query( ) once for each query. This often happens when you need distinct pieces of information from MySQL or when you want to create a fresh set of tables.

This isn’t a big problem when you know your queries ahead of time, because it’s easy to loop through and send them to MySQL one at a time. However, for some situations, this is not the case. For example, you’re writing a PHP frontend to MySQL, such as phpMyAdmin (, and want the ability to take a database dump and recreate the information.

Without the ability to send the entire dump at once, you’re required to parse the data into individual statements. That’s not as easy as it sounds, because you can’t just split on the semicolon (;). For example, it’s perfectly valid to have a line like INSERT INTO users VALUES('rasmus', 'pass;word');. Since pass;word is inside single quotes, MySQL knows it doesn’t signal the end of a statement, but a simple split isn’t smart enough to understand this. As a result, you’re effectively forced to write a MySQL parser in PHP.

The restriction of one query per request is lifted in MySQLi. This actually wasn’t a limitation in PHP, but a deficit in the protocol used by earlier versions of MySQL. Another benefit of MySQL 4.1’s updated protocol is the ability to introduce a mysqli_multi_query( ) function for these types of cases.

While this is good news, ...

Get Upgrading to PHP 5 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.