Parameterized queries and Stored Procedure queries are supported on a by-driver basis. For example, the PHP Oracle and ODBC drivers support parameterized queries and SP calls. MySQL, PostgreSQL, and Sybase drivers do not. A few extra procedures have recently been hacked on to the MSSQL/Sybase drivers (is it specific to MSSQL or does it work with Sybase too? I dunno) that let you use parameters to stored procedures.
If you ask me, this is a REAL PROBLEM.
Parameterized queries are so much better than escaping text -- more efficient on both the server and the client side, and much less likely to end up in confusion (now I striplashed the magicquotes, but they were already addslashed before, so I stripslash again, then nl2br, then...). There is the issue of matching the question-mark or parameter up with the PHP variable it goes with, but in my opinion this is much easier than the problems with escaping.
For those who aren't familiar with parameterizing queries, you do something like this:
prepare(
"INSERT INTO MyTable Set A=?, B=?, C=?",
$aVal, $bVal, $cVal
);
The variables can have any contents, and the most efficient method of sending the contents is chosen by the driver. Usually, this is via sending a length field and then the data, which means no escaping is ever done. With some APIs, you can call a stored procedure and pass one of the parameters by reference, which allows it to become an OUTPUT parameter.
I really like PHP. In my opinion, its greatest weakness is in its wacky database support. It supports a lot of different databases, but all in different ways and at different levels. Without a good way to escape binary data (at all!), I currently consider PHP's SYBASE driver broken... Oh well.