, , ... 2005 !
: 2005 2013 . : 2013 .
, ...
"" , "mysql". "" .
: php-calling-mysql-stored-procedures
( 2017):
, "IN", "INOUT" "OUT" Mysql.
, :
INOUT OUT .
, , ; -/
(XAMPP):
:
SQL:
CREATE PROCEDURE `demoSpInOutSqlVars`(IN pInput_Param INT,
INOUT pInOut_Param INT,
OUT pOut_Param INT)
BEGIN
SET pInOut_Param := ABS(pInput_Param) + ABS(pInOut_Param);
SET pOut_Param := ABS(pInput_Param) * -3;
END$$
PHP:
:
$db = appDIC('getDbConnection', 'default');
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
. EMULATE_PREPARES= false.
PHP, :
$phpInParam = 5;
$phpInOutParam = 404;
$phpOutParam = null;
SQL:
$sql = "call demoSpInOut(:phpInParam,
@varInOutParam, /* mysql variable name will be read and updated */
@varOutParam)";
$stmt = $db->prepare($sql);
PHP SQL:
1) PHP
$stmt- > bindParam (': phpInParam', $phpInParam, PDO:: PARAM_INT);
2) SQL INOUT INOUT
$db- > exec ( "SET @varInOutParam = $phpInOutParam" );// , .
:
$allOk = $stmt->execute();
SQL PHP:
$sql = "SELECT @varInOutParam AS phpInOutParam,
@varOutParam AS phpOutParam
FROM dual";
$results = current($db->query($sql)->fetchAll());
$phpInOutParam = $results['phpInOutParam'];
$phpOutParam = $results['phpOutParam'];
: , : -/
PHP
"$phpInParam:" => "5"
"$phpInOutParam:" => "409"
"$phpOutParam:" => "-15"