[英]Create Stored Procedure from PHP
我正在創建一個數據庫設置腳本,可以在飛行中創建和設置數據庫。 我使用的mysql用戶有完全的previled來創建存儲過程。 我的數據庫服務器與我的應用服務器不同。
我能夠創建用戶,然后數據庫,然后選擇數據庫,然后創建表,然后將一些數據插入表,然后創建視圖等。但最后,當我創建存儲過程時,我面臨的問題。
下面是一個sql來創建程序
CREATE DEFINER=`newuser`@`192.168.0.10` PROCEDURE `AppCounts_Stagewise_Monthly_Weekly` (IN FILTERTYPE INTEGER)
BEGIN
IF(FILTERTYPE = 0) THEN
SELECT base_user_id, stage, COUNT(vw_application.id) AS app_counts, WEEK(DATE) AS `week`, YEAR(DATE) AS `year`
FROM vw_application
WHERE DATE_SUB(CURDATE(),INTERVAL 7 DAY) <= DATE(DATE)
AND DATE(DATE) <= CURDATE() GROUP BY vw_application.stage, base_user_id;
ELSE
SELECT base_user_id, stage, COUNT(vw_application.id) AS app_counts, MONTH(DATE) AS `month`, YEAR(DATE) AS `year`
FROM vw_application
WHERE DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= DATE(DATE) AND DATE(DATE) <= CURDATE() GROUP BY vw_application.stage, base_user_id;
END IF;
END;
上面的SQL create procedure
由一個特殊的分隔符分隔並放在一個文件中。 我打開文件並通過分隔符分解每個創建腳本,以獲取數組中的每個create語句並使用zend db adapter執行它們。
$data = file_get_contents($this->_specimenDbFiles['ROUTINES']);
$data = explode('--', $data);
foreach($data as $key => $value) {
$clientDbAdaptor->query($value);
}
我剛剛設法讓這個工作。
基本上我所做的就是在我的數據庫服務器上運行以及錯誤已解決。
mysql_upgrade -u root -p
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.