Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
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) :
BEGIN declare is_test bool; SELECT count(`USR_ID`) > 0 INTO is_test FROM `utilisateur`; RETURN is_test; END
Avec Zend :
$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) :
$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 ) :
$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
Je crois que j'ai la solution (voir ici).
Il faut faire comme ceci :
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
$stmt = $dbAdapter->prepare("SELECT is_test(:id,:role)"); $stmt->execute(array(':id'=>1,':role'=>'administrator')); print_r($stmt->fetchAll());
Cela me renvoi ceci :
Array ( [0] => Array ( [is_test('1','administrator')] => 0 ) )
Voilà
Fabrice
Hors ligne