As a side note, it's not always possible to use parameter binding for all parts of a SQL query. :(
For example, when querying user uploaded databases (not a typical use case), the SQL query needs to include the table name. At least with SQLite (unsure about PostgreSQL), table names can't be bound in a parameter. They need to be part of the non parameterised query string, thus string smashing.
Field/column names are probably similar too, though I haven't checked (yet).