Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-10-2012 09:44:03

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Appel fonctions stockées // Mysql

Bonjour à tous,

Je suis en train de faire des fonctions stockées avec Mysql et Zend.

Les procédures stockées, c ok.. les vues, c ok, mais pas les fonctions stockées.

J'ai des erreurs de syntaxe ou alors le moteur mysql me dit la procédure is_test() n'existe pas (et oui, c une fonction)

Par exemple, la fonction (qui aura des paramètres en fait) :

Code:

BEGIN
declare is_test bool;

SELECT
    count(`USR_ID`) > 0 INTO is_test 
FROM
    `utilisateur`;

RETURN is_test;

END

Avec Zend :

Code:

$dbAdapter = Zend_Registry::get('front_db');
$func = 'CALL is_test()';
$stmt= $dbAdapter->query($func);

J'ai essayé plusieurs manieres de faire (comme pour les vues) :

Code:

$func = 'SELECT * FROM is_test()';

Les 2 ne marchent pas, comment faire ?.

Pour rappel, voici comment faire pour des procédures stockées et des vues (si çà peut aider quelqu'un smile ) :

Code:

$call = 'CALL sp_utilisateur_ins("'.
                $data['USR_IDENTIFIANT'].'","'.
                $data['USR_MOT_DE_PASSE'].'","'.
                $data['USR_ADRESSE_EMAIL'].'","'.
                $data['USR_CONTROLE'].'","'.
                $data['USR_ROLE'].'","'.
                $data['USR_CLE_ACTIVATION'].'","'.
                '0","'.
                $data['USR_DATE_CREATION'].'","'.
                '1",'.
                '@PAR_USR_ID)';

$stmt = $dbAdapter->query($call);
$row  = $dbAdapter->query("SELECT @PAR_USR_ID");
$row  = $row->fetchAll();

$insertId = (int)$row[0]['@PAR_USR_ID'];


$rows= $dbAdapter->query("SELECT * FROM view_available_annonce");
var_dump($rows->fetchAll());

Merci
Fabrice

Hors ligne

 

#2 11-10-2012 10:06:09

__fabrice
Membre
Date d'inscription: 25-04-2007
Messages: 131

Re: Appel fonctions stockées // Mysql

Je crois que j'ai la solution tongue  (voir ici).

Il faut faire comme ceci :

Code:

BEGIN
declare is_test bool;

SELECT
    count(`USR_ID`) > 0 INTO is_test 
FROM
    `utilisateur`

WHERE `USR_ID` = param_utilisateur_id AND `USR_ROLE` = param_utilisateur_role;

RETURN is_test;

END

et

Code:

$stmt = $dbAdapter->prepare("SELECT is_test(:id,:role)");
$stmt->execute(array(':id'=>1,':role'=>'administrator'));
print_r($stmt->fetchAll());

Cela me renvoi ceci :

Code:

Array ( [0] => Array ( [is_test('1','administrator')] => 0 ) )

Voilà
Fabrice

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages