2009-01-25 8 views
1

Eh bien j'ai cette procédure MySQL stockées que j'ai écrit et si je lance ce qui suit dans les choses phpMyAdmin retourner correctement:Pourquoi mon PHP ne retournera-t-il pas une procédure stockée MySQL?

SELECT game_name,urlfriendly(game_name) AS game_name2 FROM games 

Cependant, si je tente d'exécuter le code suivant je reçois l'erreur « Warning: Invalid argument fourni pour foreach() dans /filepath.php en ligne # »

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

Cependant, si je lance ce tout va bien:

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

Signification t il stocké proc ne reviendra pas à PHP.

Des idées?

EDIT Voici le proc stocké (mais je doute qu'il est la question que phpMyAdmin tire les valeurs de retour de celui-ci très bien)

DELIMITER //

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 Voici la erreur renvoyée de MySQL

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

Répondre

3

Pouvez-vous obtenir le errorInfo?

Pouvez-vous exécuter:

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

De phpMyAdmin?

+0

N'affichait rien - cela fonctionnera-t-il avec PDO? –

+0

Non, pour PDO, essayez http://us2.php.net/manual/fr/pdostatement.errorinfo.php –

+0

Pour PDO, vous avez besoin de print_r ($ this-> database-> errorInfo()). Je devine que c'est une chose d'autorisations si cela fonctionne dans phpmyadmin. – Greg

Questions connexes