簡體   English   中英

為什么我的PHP不返回MySQL存儲過程?

[英]Why won't my PHP return a MySQL stored procedure?

好吧,我有我編寫的這個MySQL存儲過程,如果我在phpMyAdmin中運行以下命令,一切都會正確返回:

SELECT game_name,urlfriendly(game_name) AS game_name2 FROM games

但是,如果我嘗試運行以下代碼,則會出現錯誤“警告:/filepath.php中為第#行的foreach()提供了無效的參數”

foreach ($this->database->query("SELECT game_name,urlfriendly(game_name) AS game_name2 FROM games") as $games)
{
    echo $games["game_name"] . " " . $games["game_name2"];
}

但是,如果運行此命令,一切正常:

foreach ($this->database->query("SELECT game_name FROM games") as $games)
{
    echo $games["game_name"];
}

意味着存儲的過程不會返回到PHP。

有任何想法嗎?

編輯這是存儲的過程(但我懷疑這是問題,因為phpMyAdmin正在從中拉回值)

分隔符//

DROP FUNCTION urlfriendly
//
CREATE FUNCTION urlfriendly (unsafe TEXT) RETURNS TEXT

DETERMINISTIC

BEGIN

DECLARE safe TEXT;

SET safe = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(unsafe),' ','-'),'&','and'),'`',''),'~',''),'!',''),'@',''),'#',''),'$',''),'%',''),'^',''),'*',''),'(',''),')',''),'_',''),'+',''),'=',''),'[',''),'{',''),']',''),'}',''),'|',''),'\\',''),"'",""),'"',''),':',''),';',''),'<',''),',',''),'>',''),'.',''),'/',''),'?','');

RETURN safe;

END
//

EDIT2這是從MySQL返回的錯誤

execute command denied to user 'username'@'localhost' for routine 'databasename.urlfriendly' )

你能得到errorInfo嗎?

你能跑嗎:

GRANT EXECUTE ON `database`.* TO 'username'@'localhost'

從phpMyAdmin?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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