Apparently the best way to prevent SQL injection is to use prepared statements. However prepared statements are designed for something else altogether:
In database management systems, a prepared statement or parameterized statement is a feature used to execute the same or similar database statements repeatedly with high efficiency.
[...]
On the other hand, if a query is executed only once, server-side prepared statements can be slower because of the additional round-trip to the server. Implementation limitations may also lead to performance penalties: some versions of MySQL did not cache results of prepared queries, and some DBMSs such as PostgreSQL do not perform additional query optimization during execution.
I am guessing that prepared statements are primarily designed to be used inside tight loops in order to cut down the compile time of repeated statements. SQL injection prevention is just a bonus.
Assuming we are not using PDO or "emulated" prepared statements, does it make sense to use prepared statements for queries that are used only once on a page.