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;
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gerade ausprobiert mit deinem Beispiel gespeicherte Funktion. Ich lief den folgenden code und es funktioniert gut. Ich bin mit der PHP-5.3.6 für Mac OS X, eine Verbindung zu einem Percona Server 5.5.18 Instanz auf CentOS 6 Linux.
Beachten Sie, dass das ResultSet zurück kommt mit dem vollen Ausdruck, als der Schlüssel.
Also meine print_r gibt Folgendes aus:
Wenn Sie möchten, um eine konventionelle Taste, geben Sie die Spalte ein alias.
Zum Beispiel:
InformationsquelleAutor Bill Karwin