Re: string = any() - Mailing list pgsql-general

From Filip Rembiałkowski
Subject Re: string = any()
Date
Msg-id CAP_rwwmA153GNysoot7VX1dR-5PWcf6BKP=beD1A22VeP2q5Bw@mail.gmail.com
Whole thread Raw
In response to Re: string = any()  (Andy Colson <andy@squeakycode.net>)
Responses Re: string = any()  ("David Johnston" <polobo@yahoo.com>)
List pgsql-general
W dniu 10 stycznia 2012 16:17 użytkownik Andy Colson
<andy@squeakycode.net> napisał:
>> 2012/1/10 Andy Colson<andy@squeakycode.net>:
>>> I am writing PHP where it prepares a statement like:
>>> $sql = 'select * from aTable where id = any($1)';
>>>
>>> then in php I create a string:
>>> $args = "{1,2,3}";
>>>
>>> And run it:
>>>
>>> $q = pg_query_params($db, $sql, $args);

> On 1/10/2012 9:11 AM, Filip Rembiałkowski wrote:
>> maybe try to use ARRAY constructor instead?
>>
>> http://www.postgresql.org/docs/9.0/static/sql-expressions.html#SQL-SYNTAX-ARRAY-CONSTRUCTORS

>
> As I mentioned, I cannot get it to work:
>
> clayia=# prepare x as select 'bob' = any($1);
> PREPARE
> Time: 0.665 ms
> clayia=# execute x( 'array[''joe'', ''bob'']' );
> ERROR:  array value must start with "{" or dimension information
> LINE 1: execute x( 'array[''joe'', ''bob'']' );
>

no, I meant array constructor with reserved word ARRAY:

prepare x as select 'bob' = any( ARRAY[$2,$3] );
execute x( 'joe', 'bob' );

and in PHP:
<?php
$names = array( "joe", "bob" );
$placeholders = implode( ",", array_map( function($x){return "?"},
$names ) ); #I love Perl
$sql = "select 'bob' = any( ARRAY[$placeholders] )";
$stmt = $dbh->prepare($sql);
$stmt->execute($names);
?>

pgsql-general by date:

Previous
From: "David Johnston"
Date:
Subject: Re: (check) constraints on composite type
Next
From: Yoann MOREAU
Date:
Subject: Efficient map looking table