简体   繁体   English

从PHP创建存储过程

[英]Create Stored Procedure from PHP

I am creating a database setup script which create and setup database on fly. 我正在创建一个数据库设置脚本,可以在飞行中创建和设置数据库。 The mysql user I use have full previledge to create stored procedure. 我使用的mysql用户有完全的previled来创建存储过程。 My database server is different from my application server. 我的数据库服务器与我的应用服务器不同。

I am able to create user, then database, then select database, then create tables, then insert some data into tables, then create views etc..But at last when I create stored procedures I am facing issues. 我能够创建用户,然后数据库,然后选择数据库,然后创建表,然后将一些数据插入表,然后创建视图等。但最后,当我创建存储过程时,我面临的问题。

Following a the sql to create procedure 下面是一个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;

The create procedure s SQLs like above are separated by a special separator and put in a file. 上面的SQL create procedure由一个特殊的分隔符分隔并放在一个文件中。 I open the file and explode each create script by the separator to get each create statement in an array and execute them using zend db adapter. 我打开文件并通过分隔符分解每个创建脚本,以获取数组中的每个create语句并使用zend db adapter执行它们。

$data = file_get_contents($this->_specimenDbFiles['ROUTINES']);
$data = explode('--', $data);

foreach($data as $key => $value) {
    $clientDbAdaptor->query($value); 
}

I have just managed to get this working. 我刚刚设法让这个工作。

Basically what I did is run following on my database server and error was resolved. 基本上我所做的就是在我的数据库服务器上运行以及错误已解决。

mysql_upgrade -u root -p 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM