Gespeicherte Prozeduren in PHP aufrufen (PDO)

Zum Aufrufen einer gespeicherten Prozedur aus einer PHP-Anwendung führen Sie eine SQL-Anweisung CALL aus. Die Prozedur, die Sie aufrufen, kann Eingabeparameter (IN), Ausgabeparameter (OUT) und Eingabe-und Ausgabeparameter (INOUT) enthalten.

Vorbereitende Schritte

Rufen Sie ein Verbindungsobjekt ab, indem Sie den PDO-Konstruktor aufrufen.

Informationen zu dieser Task

Diese Prozedur bereitet eine SQL-Anweisung CALL vor und führt sie aus. Weitere Informationen finden Sie auch im Abschnitt zum Vorbereiten und Ausführen von SQL-Anweisungen.

Prozedur

So rufen Sie eine gespeicherte Prozedur auf:

  1. Rufen Sie die Methode PDO::prepare auf, um eine Anweisung CALL mit Parametermarken vorzubereiten, die die Parameter OUT und INOUT darstellen.
  2. Rufen Sie für jede Parametermarke in der Anweisung CALL die Methode PDOStatement::bindParam auf, um jede Parametermarke an den Namen der PHP-Variablen zu binden, die den Ausgabewert des Parameters enthält, nachdem die Anweisung CALL abgesetzt wurde. Bei INOUT-Parametern wird der Wert der PHP-Variablen als Eingabewert des Parameters übergeben, wenn die Anweisung CALL ausgegeben wird.
    1. Setzen Sie den dritten Parameter, datentyp, auf eine der PDO: :PARAM_ * -Konstanten, die den Typ der zu bindenden Daten angibt:
      PDO: :PARAM_NULL
      Stellt den SQL-Datentyp NULL dar.
      PDO: :PARAM_INT
      Stellt ganzzahlige SQL-Typen dar.
      PDO: :PARAM_LOB
      Stellt große SQL-Objekttypen dar.
      PDO: :PARAM_STR
      Stellt SQL-Zeichendatentypen dar
      Verwenden Sie für einen INOUT-Parameter den bitweisen Operator OR, um PDO::PARAM_INPUT_OUTPUT an den Typ der zu bindenden Daten anzuhängen.
    2. Setzen Sie den vierten Parameter lengthauf die maximal erwartete Länge des Ausgabewerts.
  3. Rufen Sie die Methode PDOStatement::execute auf und übergeben Sie die vorbereitete Anweisung als Argument.

    Weitere Informationen zur PDO-API finden Sie unter http://php.net/manual/en/book.pdo.php.

Beispiel

Bereiten Sie eine SQL-Anweisung CALL vor und führen Sie sie aus.

$sql = 'CALL match_animal(?, ?)';
$stmt = $conn->prepare($sql);

$second_name = "Rickety Ride";
$weight = 0;

$stmt->bindParam(1, $second_name, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 32);
$stmt->bindParam(2, $weight, PDO::PARAM_INT, 10);

print "Values of bound parameters _before_ CALL:\n";
print "  1: {$second_name} 2: {$weight}\n";

$stmt->execute();

print "Values of bound parameters _after_ CALL:\n";
print "  1: {$second_name} 2: {$weight}\n";