我想从sp获得一个值

时间:2009-10-30 17:17:46

标签: php stored-procedures

这是我的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

这是我的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]);
}

,这是错误:

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

为什么吗

1 个答案:

答案 0 :(得分:1)

您的代码存在以下问题:

  1. 您永远不会为存储过程中的out参数productname分配值。
  2. 即使您为productname分配了值,使用SELECT @productname检索它也只会产生一个值 - 无需迭代结果。
  3. 查询CALL getproductname(2049,@productname)将返回您从简单查询select product_name from product where product_id=@productid获得的结果集 - 您必须迭代调用存储过程后返回的结果集。
  4. 我认为您在推理存储过程的使用和运行方面存在一些错误。