簡體   English   中英

從PHP創建存儲過程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM