2014-05-13 78 views
0

我使用的Postgres的數據庫,並注意到,該PDO保留一些Postgres的語法特徵變量綁定,例如:PDO綁定PARAMS佔位符PostgreSQL的衝突

檢查是否hstore有一個關鍵SELECT * FROM t WHERE store ? 'key'

設置變量類型SELECT id::integer from t

我怎麼能逃脫這樣的情況呢?也許有人可以分享更多這樣的例子?

+0

請你能澄清的問題是,究竟是什麼?你在使用'?'PDO參數佔位符嗎? –

+0

我發現了另一種使用? hstore參數,所以,是的。但問問不問如何解決?佔位符,但如何讓使用它,或者更確切地說,如何使用這兩種標準的PostgreSQL功能和PDO結合。 – user3325976

回答

1

我不認爲,有在PDO佔位符的逃逸機制。

解決方法:

  • 鑄造Postgres裏的值,可以使用SQL兼容的版本:CAST(id AS integer)
  • 爲hstore ?操作,您可以使用exist(hstore, text)功能

Also

You cannot use both named and question mark parameter markers within the same SQL statement; pick one or the other parameter style.

因此,如果您使用命名參數,它應該是安全的使用?操作,反之亦然。

事實證明,你不能。它產生錯誤:mixed named and positional parameters