Re: [GENERAL] Type cast in PHP PDO (does not work like in Java?) - Mailing list pgsql-general

From Raymond O'Donnell
Subject Re: [GENERAL] Type cast in PHP PDO (does not work like in Java?)
Date
Msg-id 6379d292-a27a-f83b-c1b7-063a8f6b9fe7@iol.ie
Whole thread Raw
In response to [GENERAL] Type cast in PHP PDO (does not work like in Java?)  (Alexander Farber <alexander.farber@gmail.com>)
List pgsql-general
On 05/08/17 16:58, Alexander Farber wrote:
> Good evening,
>
> with PostgreSQL 9.6.3 and JDBC 42.1.1.jre7 types can be casted when
> calling a stored function:
>
>          final String sql = "SELECT words_buy_vip(?::text, ?::int,
> ?::text, ?::text, ?::float, ?::inet)";
>
>          try (Connection db = DriverManager.getConnection(DATABASE_URL,
> DATABASE_USER, DATABASE_PASS);
>                  PreparedStatement st = db.prepareStatement(sql)) {
>               st.setString(2, sid);
>               st.setInt(1, SOCIAL_FACEBOOK);
>               // etc.
>               st.executeQuery();
>          }
>
> But with PHP 5.4.16 on CentOS 7 Linux the types can not be casted (and
> strangely the statement is just not being executed without any error
> being reported) and the "::text", "::int" and "::inet" should be removed
> from the placeholders as in:

I think PDO uses a colon in named parameters, so maybe that's causing
problems. You could try casting like this:

   select words_buy_vip(cast(? as text), cast(? as int), .....);

Ray.


--
Raymond O'Donnell :: Galway :: Ireland
rod@iol.ie


pgsql-general by date:

Previous
From: Alexander Farber
Date:
Subject: [GENERAL] Type cast in PHP PDO (does not work like in Java?)
Next
From: Igor Korot
Date:
Subject: Re: [GENERAL] Lifetime of PQexecPrepared() returned value