|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Expert Confirmé
![]() ![]() |
Bonjour,
Je me bats avec PDOStatement pour exécuter un appel d'une fonction stockée qui attend deux tableaux en paramètre. Bref, rien de sorcier à première vue. Le hic, c'est que j'ai beau tout tordre dans tous les sens, je récupère toujours un message d'erreur. Voici, la fonction stockée : Code :
Voici une des syntaxes qui passe (montée manuellement) avec PDOStatement : Code :
$sql = 'SELECT public.tempadd(ARRAY[50, 51], ARRAY[$$abc$$, $$def$$]);'; Code :
$sql = 'SELECT public.tempadd(ARRAY[:n1, :n2], ARRAY[:v1, :v2]);'; Code :
SQLSTATE[42883]: Undefined function: 7 ERREUR: la fonction public.tempadd(text[], text[]) n'existe pas LINE 1: SELECT public.tempadd(ARRAY[$1, $2], ARRAY[$3, $4]); Si vous êtes arrivé à contourner ce problème en utilisant PDOStatement, je suis preneur de l'astuce. Merci
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() ![]() |
Allez je vais me répondre comme ça je ne devrai pas être trop déçu de la reponse
![]() Ce qui suit est valable pour PHP 5.3.6 et inférieur Après un paquet d'essais, cela n'a jamais fonctionné. Donc en conclusion, quand vous utilisez les tableaux postgre pour le passage de vos arguments il faut monter manuellement toute la chaine SQL, protéger vous-même vos valeurs et l'exécuter directement sans la case prepare() Ne vous amusez pas à juste mettre à plat le tableau et conserver d'autre tags car il y a un très gros piège : Ex : Code :
$sql = 'SELECT public.tempadd(:nom, ARRAY[50, 51], ARRAY[$$abc$$, $$def$$]);'; Code :
$sql = 'SELECT public.tempadd(:nom, ARRAY[50, 51], ARRAY[$$abc$$, $$ceque:vousvoulez$$]);'; Je vous mets ci-dessous, la fonction de protection des textes avec la notation (très pratique au passage) de postgre : Code :
__________________
# Dans la Création, tout est permis mais tout n'est pas utile... |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com