Aller au contenu

Appel à une procédure stockée


Sujets conseillés

Posté

Bonjour,

Je n'ai aucune erreur lors de l'exécution de mon script mais je n'ai pas non plus de nouvelles données dans ma base...

Voici mon script :

 <?php
try{
$dbh = new PDO($dns, $user, $pass_bd);
$sth = $dbh->prepare('CALL lb_AjoutArticle(?,?,?,?,?,?,?)');
$sth->bindParam(1, $_POST['titre'],PDO::PARAM_INPUT_OUTPUT);
$sth->bindParam(2, $_POST['stitre'],PDO::PARAM_INPUT_OUTPUT);
$sth->bindParam(3, $_POST['intro'],PDO::PARAM_INPUT_OUTPUT);
$sth->bindParam(4, $_POST['contenu'],PDO::PARAM_INPUT_OUTPUT);
$sth->bindParam(5, $_POST['sujet'],PDO::PARAM_INPUT_OUTPUT);
$sth->bindParam(6, $_POST['langage'],PDO::PARAM_INPUT_OUTPUT);
$sth->bindParam(7, $_POST['invite'],PDO::PARAM_INPUT_OUTPUT);
$sth->execute();
} catch( Exception $e){
echo "Échec : " . $e->getMessage();
}
?>

Voilà ma procédure :

BEGIN
DECLARE v_id_l INTEGER;
DECLARE v_id_s INTEGER;
DECLARE v_id_i INTEGER;

Select lb_langage.`id_langage` INTO v_id_l
From lb_langage
Where lb_langage.`nom_langage` Like p_langage;

If v_id_l IS NULL Then
INSERT INTO lb_langage Values ('', p_langage, ' ', 'A completer');
Select lb_langage.`id_langage` INTO v_id_l
From lb_langage
Where lb_langage.`nom_langage` Like p_langage;
End If;

Select lb_sujet.`id_sujet` INTO v_id_s
From lb_sujet
Where lb_sujet.`nom_sujet` Like p_sujet;

If v_id_s IS NULL Then
INSERT INTO lb_sujet Values ('', p_sujet);
Select lb_sujet.`id_sujet` INTO v_id_s
From lb_sujet
Where lb_sujet.`nom_sujet` Like p_sujet;
End If;

If p_invite IS NOT NULL Then
Select lb_invite.`id_invite` INTO v_id_i
From lb_invite
Where lb_invite.`nom_invite` Like p_invite;

If v_id_i IS NULL Then
INSERT INTO lb_invite Values ('', p_invite, ' ', 'http://');
Select lb_invite.`id_invite` INTO v_id_i
From lb_invite
Where lb_invite.`nom_invite` Like p_invite;
End If;
End If;

INSERT INTO lb_articles VALUES ('', p_titre, p_stitre, p_intro, p_contenu, v_id_s, v_id_l, v_id_i);
COMMIT;
END

Je sais c'est pas trop bien programmer (la procédure) mais venant du pl/sql je sais pas trop ce que je sais faire...

Merci pour votre aide!

Posté

Déjà un premier truc qui me semble bizarre

Tu pourrais avoir plusieurs résultats pour :

Select lb_langage.`id_langage` From lb_langage

Where lb_langage.`nom_langage` Like p_langage;

Donc impossible de les charger sur une seule variable

En principe SELECT INTO insère dans une table

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...