[英]How to create a MySQL stored procedure from PHP?
我嘗試使用存儲過程 (SP) 的 create 語句從 PHP 查詢 MySQL 的嘗試都失敗了。 這不可能嗎?
如果確實可能,請舉例說明。
除了特權之外,很可能會導致您的問題的是,實際上 mysql_query($query) 每次調用只能運行一個命令!
所以你要做的就是將命令拆分成幾個 mysql_query($query) -calls。
我的意思是這樣的:
$query = "DROP FUNCTION IF EXISTS fnElfProef (accountNr INT)";
mysql_query($query);
$query = "CREATE FUNCTION fnElfProef (accountNr INT)
RETURNS BOOLEAN
BEGIN
DECLARE i, totaal INT DEFAULT 0;
WHILE i < 9 DO
SET i = i+1;
SET totaal = totaal+(i*(accountNr%10));
SET accountNr = FLOOR(accountNr/10);
END WHILE;
RETURN (totaal%11) = 0;
END";
mysql_query($query);
$query = "SELECT * FROM mytable";
mysql_query($query);
您不能在 PHP 中使用 DELIMITER 語句。 所以,
1) remove the DELIMITER statements
2)and change all your delimiters to ;
這很煩人,因為現在你必須有一個帶有分隔符的版本,以便在 MySQL 命令行中進行開發和測試,或者像 sqlyog 或 MySQL 工作台這樣的 MySQL 工具,以及一個沒有分隔符的版本,以便通過你的 PHP 程序使用。
如果有人知道更好的方法,我想聽聽 - (但不是通過調用 OS shell 腳本 - 有太多殘留問題。)
而且你需要超級權限。
MySQL 手冊清楚地概述了如何創建存儲過程( 13.1.15. CREATE PROCEDURE
和CREATE FUNCTION
Syntax ) 。
下一個問題是:您用於訪問 MySQL 數據庫的帳戶是否具有實際創建過程的適當權限?
可以在此處找到有關此問題的詳細信息: 19.2.2。 存儲例程和 MySQL 權限
您是否對從 PHP 連接的帳戶獲得了足夠的權限? 從手冊
從 MySQL 5.0.3 開始,要執行 CREATE PROCEDURE 或 CREATE FUNCTION 語句,需要有 CREATE ROUTINE 權限
另請參閱手冊中的存儲例程和 MySQL 權限。
替換 mysql_query($query);
到 mysql_unbuffered_query($query,$link_connection);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.