Я читав тут Збережені процедури та 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()
метод
Отже, щоб відповісти на ваше запитання: так, можна використовувати обидва одночасно (оскільки це різні речі), але не так, як ви собі уявляєте, і це було б зайвим.