Я хочу получить значение от SP - PullRequest
0 голосов
/ 30 октября 2009

это мой зр:

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 Ответ

1 голос
/ 30 октября 2009

У вас есть следующие проблемы с вашим кодом:

  1. Вы никогда не назначаете значение своему параметру out productname внутри хранимой процедуры.
  2. Даже если вы присвоили значение productname, его извлечение с помощью SELECT @productname приведет только к одному значению - нет необходимости перебирать результат.
  3. Запрос CALL getproductname(2049,@productname) вернет набор результатов, который вы получите из простого запроса select product_name from product where product_id=@productid - вам придется перебирать набор результатов, который вы получите от вызова вашей хранимой процедуры.

Я думаю, у вас есть какая-то ошибка в рассуждениях относительно использования и функционирования хранимых процедур.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...