2015-08-16 3 views
1

Я написал хранимую процедуру в mysql, которая вставляет в таблицу и выбирает поле (id), чтобы впоследствии было назначено переменной php, чтобы в конечном итоге передать ее как параметр к другой процедуре mysql. Первая процедура работает нормально, когда я вызываю ее из mysql, она возвращает значение, для которого оно предназначалось. Проблема возникает, когда я пытаюсь получить это значение от php. Heres мой код:Сохраненные процедуры Возврат Mysql Php

DELIMITER $ 
CREATE PROCEDURE addEntity(p_idPerson INT(11), 
p_nameP VARCHAR(50), p_objective VARCHAR(8), 
OUT p_idProduct INT(11) 
) 
BEGIN 

INSERT INTO EntityTb (idPerson, nameP, objective) VALUES(p_idPerson, p_nameP, p_objective); 
SET p_idProduct= (SELECT idProduct FROM EntityTb WHERE idPerson= p_idPerson ORDER BY idProduct DESC LIMIT 1); 
SELECT p_idProduct; 
END$ 
DELIMITER; 

PHP

$prep_stmt = "CALL addEntity(?,?,?,?)"; 
$insert_stmt = $mysqli->prepare($prep_stmt); 
$p_id= "@p_idProduct"; 

if ($insert_stmt) { 
    $insert_stmt->bind_param('issi', $arg1, $arg2, $arg3 $p_id); 
    $insert_stmt->execute(); 
    while ($rs= $insert_stmt->fetch()) { 
     //debug($rs); 
     echo "\r\n rs: ".$rs; 
    } 
} 

ответ

0

Я установил ее. Просто нужно было сменить код php выше на приведенный ниже.

$ insert_stmt = $ mysqli-> query ("CALL addProduct ($ arg1, '$ arg2', '$ arg3', @p_idProduct)");

if ($insert_stmt->field_count) 
{ 
    $rs= $insert_stmt->fetch_assoc(); 
    $id_prod= $rs['p_idProduct']; 
    echo "id_product: ".$id_product; 
} 
Смежные вопросы