Perl DBI et SELECT .. IN() ?

Le
ctobini
Bonjour,

J'utilise le module PgPP et cherche à requêter une base PostgreSQL
8.1.

J'ai une liste d'argements dans un tableau contenant plusieurs chaînes
de caractères et je voudrais effectuer une requête à l'aide de IN().

J'ai essayé plusieurs méthodes :

$sth = $dbh->prepare(sprintf "SELECT a FROM b WHERE b IN(%s)", $dbh-
>quote(join ',', @tab))

$sth = $dbh->prepare(sprintf "SELECT a FROM b WHERE b IN(?, ?)
$sth->bind_param(1, $tab[0]);
$sth->bind_param(2, $tab[1])
Cette méthode est censée ne pas fonctionner mais au point où j'en
suis

Sauriez-vous comment passer un tableau ou hash avec IN() ou une
méthode faisant le travail équivalent ?

En vous remerciant,

C. Tobini
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
espie
Le #1197175
In article ctobini
$sth = $dbh->prepare(sprintf "SELECT a FROM b WHERE b IN(%s)", $dbh-
quote(join ',', @tab))



J'essaierais bien:

$sth = $dbh-prepare(sprintf "SELECT a FROM b WHERE b IN(%s)",
join(',', map { $dbh->quote($_) } @tab));


Jogo
Le #1210208
Sur fr.comp.lang.perl, ctobini disait :

Sauriez-vous comment passer un tableau ou hash avec IN() ou une
méthode faisant le travail équivalent ?


Avec DBD::Pg et postgreSQL 8.2, je fais quelquechose comme :

$sth = $dbh->prepare(q{
SELECT a FROM b WHERE b = ANY (?) });
$sth->execute('{'.join(',',@tab).'}');

La syntaxe "= ANY" force l'évaluation d'un tableau.

--
Nous prenons plaisir à contempler les images les plus exactes de
choses dont la vue nous est pénible dans la réalité.
-- Aristote

Publicité
Poster une réponse
Anonyme