L'appel de MYSQL fonctions stockées (pas de procédures stockées) dans le Zend Framework

Est-il un moyen pour appeler un MySQL fonction stockée (pas de procédure) dans le Zend Framework? Ou de travailler dans le cadre de l'utilisation non filtrée code PHP?

Dans une 'pure' application php, le code suivant fonctionne - à l'aide de la mysqli connexion db (pas de mysql). Toutefois, dans le Zend framework, ce code ne sera pas provoquer une erreur d'application mais aussi de ne pas lier le résultat à la variable php.

Si vous utilisez un adaptateur Zend_Db, il n'y a aucun moyen que je peux trouver pour lier le résultat de la fonction à une variable (et donc obtenir la réponse: il n'y a pas de Zend_Db méthode de l'équivalent de "bind_result').

J'ai regardé les précédentes questions, mais ils mettent l'accent sur les procédures stockées (par exemple Comment puis-je utiliser une procédure stockée dans une base de données MySql avec Zend Framework? ).

Grâce.

Mise à JOUR: Depuis la rédaction, j'ai découvert que cela fonctionne bien avec MYSQL sur MAMP, mais pas avec MYSQL sur Zend Server CE sur Mac.

MySQL fonction stockée:

CREATE FUNCTION GetUserAccountType(
inUsername  VARCHAR(50)
) RETURNS INT(3)
BEGIN
    SELECT AccountType_i INTO @retVal FROM UserTable WHERE Username_vc = inUsername;
    RETURN @retVal;
END;
GO

Du code Php à l'appel de la fonction MySQL:

//open mysqli connection with db
$my_db = new mysqli($db_hostname, $db_username, $db_password, $db_database);

// Prepare MySQL function ($userName is a string)

$stmt=$my_db->prepare("SELECT GetUserAccountType(?)") or die($my_db->error); 
$stmt->bind_param('s', $userName) or die($stmt->error);
$stmt->execute() or die($stmt->error); 
$stmt->bind_result($result);   
$stmt->fetch();

//(in php the $result variable  is now set as the result of the MySQL function, @retVal.
//In Zend framework, the $result variable is set to FALSE)
return $result;
  • Vous pouvez utiliser "pure" de php dans le cadre si vous le souhaitez. Je n'utilise pas du cadre des fonctions de base de données et il fonctionne, tout simplement.
  • Je ne pense pas que Zend a un grand soutien pour l'UDF. J'ai eu des expériences où UDF appelé via Zend provoquer d'étranges erreurs php. Toutefois, l'appel de la même UDF via PHP mysqli fonctions travaillé.
InformationsquelleAutor Paul_O | 2012-01-01