Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/06/2007, 00h05   #1
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
Par défaut SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "GFH" at character 58

Bonjour,

Je veux utiliser la fonction suivante pour insérer des lignes ds une table depuis un script php:

create or replace function creauserauth(varchar,varchar,varchar,varchar,varchar) returns void as $$
declare
sir alias for $1;
ema alias for $2;
com alias for $3;
newus alias for $4;
psw alias for $5;
ret TEXT;
begin
insert into userauth(siret,email,commonname,username,pswd) values (sir,ema,com,newus,psw);
return;
end;
$$ language 'plpgsql';

et le script php :

$sql2 = "select creauserauth($tab[2],$tab[3],$tab[9],$tab[8],$tab[10])";
$stmt= $dbh->prepare($sql2);
$stmt->execute();

et voilà le rendu :


erreur ! : SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "GFH" at character 58

Je n'arrive pas à comprendre l'erreur...
Merci d'avance aux éclairés...
Patrick Charda
patrickcharda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 11h52   #2
Membre habitué
 
Inscription : mars 2007
Messages : 107
Détails du profil
Informations forums :
Inscription : mars 2007
Messages : 107
Points : 106
Points : 106
c'est quoi les valeurs qu'il y a dans les tab ???

sinon pour la requête insert, sir les champs sont de type text, ne faut-il pas des ' autour des chaines ?

Code :
1
2
3
INSERT INTO 
userauth(champstext1,champstext2,champstext3,champstext4,champstext5) 
VALUES ('chaine1', 'chaine2', 'chaine3', 'chaine4', 'chaine5');
dinguot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/06/2007, 23h49   #3
Invité de passage
 
Inscription : avril 2007
Messages : 6
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 6
Points : 2
Points : 2
Par défaut merci pour la piste

Merci pour la piste : effectivement il fallait "caster" comme suit :

CREATE OR REPLACE FUNCTION creauserauth("varchar", "varchar", "varchar", "varchar", text)
RETURNS void AS
$BODY$
insert into userauth(siret,email,commonname,username,pswd) values (CAST($1 as integer),cast($2 as varchar(60)),cast($3 as varchar(35)),cast($4 as varchar(10)),CAST($5 as text));
$BODY$
LANGUAGE 'sql' VOLATILE;

et à l'appel depuis PHP utiliser les accolades :

$sql2 = "select * from creauserauth('{$tab[2]}','{$tab[3]}','{$tab[9]}','{$tab[8]}','{$tab[10]}')";
$result = $dbh->query($sql2);

@ bientôt
Patrick Charda
patrickcharda est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h32.


 
 
 
 
Partenaires

Hébergement Web