Не могли бы вы помочь мне в этом: я кодирую PHP и создал хранимую процедуру в MySQL, которая получает два входных значения и возвращает один выходной параметр
DELIMITER $$ USE `ejemplo`$$ DROP PROCEDURE IF EXISTS `insert_sp`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_sp`( IN ID VARCHAR(8), IN Nombre VARCHAR(50), OUT msg VARCHAR(50) ) BEGIN INSERT INTO empleado_php VALUES (ID, Nombre); SELECT "Todo bien" INTO msg; END$$ DELIMITER ;
и назовите это через mysqli, все работает отлично, если я использую код, сжатый ниже
if (!$mysqli->query("SET @msg = ''") || !$mysqli->query("CALL insert_sp('" . $id . "', '" . $nombre . "', @msg)")) echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error; if (!($res = $mysqli->query("SELECT @msg as _p_out"))) echo "Fetch failed: (" . $mysqli->errno . ") " . $mysqli->error;
и покажите выходное значение следующим образом:
$row = $res->fetch_assoc(); echo $row['_p_out'];
Мой вопрос: как я могу скомпоновать код, если мне нужно использовать подготовленные заявления? не могли бы вы привести мне пример … это то, что я до сих пор, но не работает
if (!$mysqli->prepare("SET @msg = ''") || !$mysqli->prepare("CALL insert_sp(?,?,@msg)")) echo "CALL failed: (" . $mysqli->errno . ") " . $mysqli->error; if (!($res = $mysqli->prepare("SELECT @msg as _p_out"))) echo "Fetch failed: (" . $mysqli->errno . ") " . $mysqli->error; if(!$mysqli->bind_param("ss", $id, $nombre)){ echo "Error en bind-param ingresar_sp.php " .$mysqli->connect_error; } $mysqli->execute(); $row = $res->fetch_assoc(); echo $row['_p_out'];
Кстати … Мне нужно показать выходное значение через эхо.
Заранее спасибо.