Aufrufen von MYSQL-gespeicherte Funktionen (nicht gespeicherte Prozeduren) in Zend Framework

Gibt es eine Möglichkeit zum Aufruf einer MySQL gespeichert-Funktion (nicht procedure) im Zend Framework? Oder arbeiten rund um den Rahmen für die Verwendung von ungefilterten PHP-code?

In einem 'reinen' php-Anwendung, der folgende code funktioniert - mit der mysqli-db-Verbindung (nicht mysql). Aber in Zend framework, dieser code wird nicht bewirken, dass eine Anwendung Fehler, aber auch nicht binden, das Ergebnis der php-variable.

Wenn Sie die Nutzung des Zend_Db adapter, es gibt keine Möglichkeit, die ich finden kann, zu binden, das Ergebnis der Funktion an eine variable (und damit die Antwort - es ist keine Factory-Methode entspricht 'bind_result').

Ich habe mir bei vorherigen Fragen, aber Sie konzentrieren sich auf gespeicherte Prozeduren (z.B. Wie kann ich eine gespeicherte Prozedur verwenden, die in einer MySql-Datenbank mit Zend Framework? ).

Dank.

UPDATE: Seit schreiben, habe ich entdeckt, dass dies funktioniert gut mit MYSQL auf MAMP, aber nicht mit MYSQL auf Zend Server CE unter Mac.

MySQL gespeichert Funktion:

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

Php-code den Aufruf der MySQL-Funktion:

//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;
Sie können mit "reinem" php im Rahmen, wenn Sie möchten. Ich glaube nicht, verwenden Sie eine der framework-Funktionen der Datenbank und es funktioniert einfach.
Ich glaube eher nicht, dass Zend hat große Unterstützung für die UDF. Ich habe Erfahrungen gesammelt, wo die UDF aufgerufen, über Zend zu seltsamen php-Fehler. Jedoch, ruft die gleiche UDF via PHP mysqli Funktionen gearbeitet.

InformationsquelleAutor Paul_O | 2012-01-01

Schreibe einen Kommentar