2009-10-30 10 views
0

c'est mon sp:Je veux obtenir une valeur de sp

CREATE DEFINER=`root`@`localhost` PROCEDURE `getproductname`(in productid int , out productname varchar(200)) 
BEGIN 
     select product_name from product where product_id=productid ; 
END 

et voici mon code php:

$mysqli = new mysqli(DB_HOST,DB_USER,DB_PWD,DB_NAME); 

$mysqli->query("CALL getproductname(2049,@productname)") ; 
$result = $mysqli->query("SELECT @productname"); 
while($row = $result->fetch_object()){ 
    echo ($row[0]); 
} 

et ceci est une erreur:

Fatal error: Call to a member function fetch_object() on a non-object in D:\WEB\book24ss\_res\sptest.php on line 19 

pourquoi?

+1

Vous obtenez une erreur SQL. Vérifiez le contenu de $ mysqli-> erreur –

Répondre

1

Vous avez les problèmes suivants avec votre code:

  1. Vous n'attribuez une valeur à votre paramètre outproductname dans votre procédure stockée.
  2. Même si vous attribuez une valeur à productname, la récupération à l'aide de SELECT @productname aboutirait à une seule valeur - il n'est pas nécessaire de parcourir le résultat.
  3. La requête CALL getproductname(2049,@productname) renverra l'ensemble de résultats que vous obtiendriez de la requête simple select product_name from product where [email protected] - vous devriez parcourir le jeu de résultats que vous obtenez après avoir appelé votre procédure stockée.

Je pense que vous avez une erreur de raisonnement concernant l'utilisation et le fonctionnement des procédures stockées.

+0

merci beaucoup. votre réponse était très utile –

Questions connexes