在Zend Framework中有沒有辦法調用MySQL存儲函數(不是過程)?或者繞過框架使用未過濾的PHP代碼?在Zend Framework中調用MYSQL存儲函數(非存儲過程)
在'pure'php應用程序中,下面的代碼工作 - 使用mysqli db連接(不是mysql)。但是在Zend框架中,這段代碼不會導致應用程序錯誤,但也不會將結果綁定到php變量。
如果您使用Zend_Db適配器,我無法找到將函數的結果綁定到變量(從而得到答案 - 沒有Zend_Db方法等同於'bind_result')。
我看過以前的問題,但他們專注於存儲過程(例如How can I use a stored procedure in a MySql database with Zend Framework?)。
謝謝。
更新:自寫以來,我發現這與MAMP上的MYSQL正常工作,但與Mac上的Zend Server CE上的MYSQL無關。
MySQL存儲功能:
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代碼調用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;
如果需要,您可以使用該框架內的「純」 PHP。我不使用任何框架數據庫函數,它只是工作。 – Lobo 2012-01-02 09:47:38
我其實不認爲Zend對UDF有很大的支持。我有過UDF通過Zend調用導致奇怪的PHP錯誤的經驗。但是,通過PHP的'mysqli'函數調用同一個UDF的工作。 – 2012-01-03 02:25:23