/ / Чи можливо прив'язати параметри до збереженої процедури в MYSQLi? - php, зберігаються-процедури, mysqli

Чи можна пов'язати параметри з збереженою процедурою в MYSQLi? - php, stored-procedures, mysqli

Я читав тут Збережені процедури та MYSQLi http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

та інших джерел, але я все ще не впевнений, як викликати збережену процедуру ? (як підготовлена ​​заява)

Чи можливо прив’язати параметри до збереженої процедури чимось подібним до цього:

$mysqli->query("CREATE PROCEDURE p(IN id_var INT) BEGIN INSERT INTO test(id)
VALUES(id_var); END;"))
$mysqli->bindParam("i", $some_int);
$mysqli->query("CALL p");

Відповіді:

-1 для відповіді № 1

Параметри прив'язки - це операція на стороні PHP; Збережені процедури - це річ MySQL. Ці два не пов'язані між собою і не повинні розглядатися як такі.

За допомогою підготовлених операторів та прив’язки параметрів ви визначаєте запит, використовуючи prepare() метод, а потім прив'язати значення до ?с використанням bind_param(). Отже, на вашому прикладі підхід із підготовленими висловлюваннями буде виглядати так:

$stmt = $mysqli->prepare("INSERT INTO test (id) VALUES (?)");
$stmt->bind_param("i", $some_int);
$stmt->execute();

З іншого боку, із збереженою процедурою ви просто викликаєте її використовуючи CALL команда як звичайний запит:

//procedure created beforehand
CREATE PROCEDURE p(IN id_var INT)
INSERT INTO test (id)
VALUES (id_var);
//now in PHP:
$mysqli->query("CALL p($some_int)");

Я не впевнений, чи можете ви запустити CREATE PROCEDURE використовуючи query() метод

Отже, щоб відповісти на ваше запитання: так, можна використовувати обидва одночасно (оскільки це різні речі), але не так, як ви собі уявляєте, і це було б зайвим.