/ / Est-il possible de lier des paramètres à une procédure stockée dans MYSQLi? - php, procédures stockées, mysqli

Est-il possible de lier des paramètres à la procédure stockée dans MYSQLi? - php, saved-procedures, mysqli

J'ai lu sur Stored Procedures & MYSQLi d'ici http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

et d’autres sources, mais je ne sais toujours pas comment appeler une procédure stockée avec ? (comme une déclaration préparée)

Est-il possible de lier des paramètres à une procédure stockée, de la même manière:

$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");

Réponses:

-1 pour la réponse № 1

Les paramètres de liaison sont une opération côté PHP; les procédures stockées sont une chose de MySQL. Les deux ne sont pas liés et ne doivent pas être traités comme tels.

Avec les instructions préparées et la liaison de paramètres, vous définissez une requête à l'aide du prepare() méthode, puis lier des valeurs dans le ?s utilisant bind_param(). Donc, étant donné votre exemple, une approche par déclarations préparées ressemblerait à ceci:

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

D'autre part, avec une procédure stockée, vous l'appelez simplement en utilisant le CALL commander comme une requête normale:

//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)");

Je ne suis pas sûr de pouvoir courir un CREATE PROCEDURE en utilisant le query() méthode.

Donc, pour répondre à votre question: oui, il est possible d’utiliser les deux en même temps (parce que ce sont des choses différentes), mais pas de la manière que vous imaginez, c’est redondant.