checking select query syntax and semantics via php without executing

Marco Dieckhoff <[email protected]> Mon, 05 Oct 2009 23:34:32 +0200
Newsgroups gmane.comp.db.postgresql.php
Message-ID <[email protected]>
Hi there!

Is it possible in PHP to give a sql (select) query to Postgres via pg_* 
so that it is NOT executed but merely checked for syntax including 
correct, existing field and table names, and data types?


I'm working on a system where users may assemble their own query in a 
construction kit, and want that to be checked, so that they don't e.g. 
compare UUID "<" datetime or something like this.


If I try to execute the generated query, bad queries are instantly found 
by pg_query.


But good ones are fully executed, which can take a long time depending 
on joins and aggregations.

It seems that pg_prepare doesn't return errors on bad queries, 
pg_last_error() is empty.

The asynchronous pg_send_query (and pg_cancel_query) seem not to return 
any errors, either.

I tried with three queries:

"SELECT * FROM tableok"
"SELECT nonexistingfield FROM nonexistingtable"
"SELECT complete bad / sql query FROM nonsense"


Any ideas?

-- 
Sent via pgsql-php mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-php