/ / Ist es möglich, Parameter an die gespeicherte Prozedur in MYSQLi zu binden? - PHP, gespeicherte Prozeduren, mysqli

Ist es möglich, Parameter an die gespeicherte Prozedur in MYSQLi zu binden? - PHP, gespeicherte Prozeduren, mysqli

Ich habe von Stored Procedures & MYSQLi gelesen http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

und andere Quellen, bin aber immer noch unsicher, wie man eine gespeicherte Prozedur aufruft ? (wie eine vorbereitete Aussage)

Ist es möglich, Parameter in einer ähnlichen Weise an eine gespeicherte Prozedur zu binden:

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

Antworten:

-1 für die Antwort № 1

Bindungsparameter ist eine PHP-seitige Operation; Gespeicherte Prozeduren sind eine MySQL-Sache. Die beiden sind nicht verwandt und sollten nicht als solche behandelt werden.

Mit vorbereiteten Anweisungen und Parameterbindung definieren Sie eine Abfrage mit dem prepare() Methode, dann binden Sie Werte in die ?s benutzen bind_param(). In Anbetracht Ihres Beispiels würde ein Ansatz mit vorbereiteten Aussagen folgendermaßen aussehen:

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

Auf der anderen Seite, mit einer gespeicherten Prozedur, rufen Sie es einfach auf Verwendung der CALL Befehl als normale Abfrage:

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

Ich bin mir nicht sicher, ob Sie eine CREATE PROCEDURE Verwendung der query() Methode.

Also, um Ihre Frage zu beantworten: Ja, es ist möglich, beide gleichzeitig zu benutzen (weil sie verschiedene Dinge sind), aber nicht so, wie Sie es sich vorstellen, und es wäre überflüssig.