процедура не получает данные char в mysql [duplicate]

8
задан John Doe 9 June 2013 в 22:51
поделиться

2 ответа

К сожалению, MySQLi не имеет встроенной поддержки выходных параметров sproc; вместо этого нужно вывести в MySQL пользовательские переменные , а затем извлечь значения, используя отдельный оператор SELECT.

Использование процедурного интерфейса:

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = mysqli_connect();

$call = mysqli_prepare($mysqli, 'CALL test_proc(?, ?, ?, @sum, @product, @average)');
mysqli_stmt_bind_param($call, 'iii', $procInput1, $procInput2, $procInput3);
mysqli_stmt_execute($call);

$select = mysqli_query($mysqli, 'SELECT @sum, @product, @average');
$result = mysqli_fetch_assoc($select);
$procOutput_sum     = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];

Или, используя объектно-ориентированный интерфейс:

$procInput1 = 123;
$procInput2 = 456;
$procInput3 = 789;

$mysqli = new mysqli();

$call = $mysqli->prepare('CALL test_proc(?, ?, ?, @sum, @product, @average)');
$call->bind_param('iii', $procInput1, $procInput2, $procInput3);
$call->execute();

$select = $mysqli->query('SELECT @sum, @product, @average');
$result = $select->fetch_assoc();
$procOutput_sum     = $result['@sum'];
$procOutput_product = $result['@product'];
$procOutput_average = $result['@average'];
17
ответ дан eggyal 1 September 2018 в 04:14
поделиться

Вот вариант вышеупомянутого ответа, PHP-код для вызова хранимой процедуры MySQL:

require("/home/course/username/database/login.php"); //path to your login information file

$link = mysqli_connect($host, $user, $pass);
if (!$link) die("Couldn't connect to MySQL");

mysqli_select_db($link, $db)
or die("Couldn't open $db: ".mysqli_error($link));

$procInput1 = "123";
$procInput2 = "456";
$procInput3 = "789";

//Call stored procedure and insert query execution
$sql = "CALL test_proc($procInput1, $procInput2, $procInput3, @output_sum, @output_product, @output_average)";
if(mysqli_query($link, $sql)){
echo "Procedure test_proc records added/updated successfully.";
} else{
echo "ERROR: Couldn't execute $sql. " . mysqli_error($link);
}

$select = $mysqli->query('SELECT @output_sum, @output_product, @output_average');
$result = $select->fetch_assoc();
$procOutput_sum     = $result['@output_sum'];
$procOutput_product = $result['@output_product'];
$procOutput_average = $result['@output_average'];
-1
ответ дан Carlo Carandang 1 September 2018 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: