sqlsrv_prepare

Erstellt eine mit der angegebenen Verbindung verknüpfte Anweisungsressource.

Hinweis

Diese Funktion eignet sich ideal zur Ausführung mehrerer Abfragen. Weitere Informationen finden Sie unter Vorgehensweise: Mehrmaliges Ausführen einer Abfrage.

Syntax

sqlsrv_prepare( resource $conn, string $tsql [, array $params [, array $options]])

Parameter

$conn: Die der erstellten Anweisung zugeordnete Verbindungsressource.

$tsql: Der Transact-SQL-Ausdruck, der der erstellten Anweisung entspricht.

$params [OPTIONAL]: Ein array mit Werten, die den Parametern einer parametrisierten Abfrage entsprechen. Jedes Arrayelement kann von einem der folgenden Typen sein:

  • Ein Literalwert

  • Ein Verweis auf eine PHP-Variable

  • Ein array mit der folgenden Struktur:

    array(&$value [, $direction [, $phpType [, $sqlType]]])
    

    Hinweis

    Als Abfrageparameter übergebene Variablen sollten als Verweis und nicht als Wert übergeben werden. Übergeben Sie beispielsweise &$myVariable anstelle von $myVariable. Es wird eine PHP-Warnung ausgegeben, wenn eine Abfrage mit als Wert übergebenen Parametern ausgeführt wird.

    In der folgenden Tabelle werden diese Arrayelemente beschrieben:

    Element Beschreibung

    &$value

    Ein Literalwert oder ein Verweis auf eine PHP-Variable.

    $direction [OPTIONAL]

    Eine der folgenden SQLSRV_PARAM_*-Konstanten wird zur Angabe der Parameterrichtung verwendet: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. Der Standardwert lautet SQLSRV_PARAM_IN.

    $phpType [OPTIONAL]

    Eine SQLSRV_PHPTYPE_*-Konstante, die den PHP-Datentyp des zurückgegebenen Werts angibt.

    $sqlType [OPTIONAL]

    Eine SQLSRV_SQLTYPE_*-Konstante, die den SQL Server-Datentyp des Eingabewerts angibt.

$options [OPTIONAL]: Ein assoziatives Array, mit dem die Abfrageeigenschaften festgelegt werden. Die nachfolgende Tabelle enthält die unterstützten Schlüssel und die zugehörigen Werte:

Schlüssel Unterstützte Werte Beschreibung

QueryTimeout

Ein positiver ganzzahliger Wert

Legt das Abfragetimeout in Sekunden fest. Standardmäßig wartet der Treiber unendlich lange auf Ergebnisse.

SendStreamParamsAtExec

true oder false

Der Standardwert lautet true.

Konfiguriert den Treiber so, dass sämtliche Streamdaten zur Ausführungszeit (true) bzw. die Streamdaten in Segmenten (false) gesendet werden. Standardmäßig ist der Wert auf true festgelegt. Weitere Informationen finden Sie unter sqlsrv_send_stream_data.

Scrollfähigkeit

SQLSRV_CURSOR_FORWARD

SQLSRV_CURSOR_STATIC

SQLSRV_CURSOR_DYNAMIC

SQLSRV_CURSOR_KEYSET

Dieser Schlüssel wurde in Version 1.1 des SQL Server-Treiber für PHP hinzugefügt.

Weitere Informationen zu diesen Werten finden Sie unter Angeben eines Cursortyps und Auswählen von Zeilen.

Rückgabewert

Eine Anweisungsressource. Wenn die Anweisungsressource nicht erstellt werden kann, wird false zurückgegeben.

Beispiel

Im folgenden Beispiel wird eine Anweisung vorbereitet und ausgeführt. Wenn die Anweisung ausgeführt wird (siehe sqlsrv_execute), wird ein Feld in der Sales.SalesOrderDetail-Tabelle der AdventureWorks-Beispieldatenbank aktualisiert. Im Beispiel wird davon ausgegangen, dass SQL Server und die AdventureWorks-Datenbank auf dem lokalen Computer installiert sind. Alle Ausgaben werden in die Konsole geschrieben, wenn das Beispiel über die Befehlszeile ausgeführt wird.

<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
     echo "Could not connect.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Set up Transact-SQL query. */
$tsql = "UPDATE Sales.SalesOrderDetail 
         SET OrderQty = ? 
         WHERE SalesOrderDetailID = ?";

/* Assign parameter values. */
$param1 = 5;
$param2 = 10;
$params = array( &$param1, &$param2);

/* Prepare the statement. */
if( $stmt = sqlsrv_prepare( $conn, $tsql, $params))
{
      echo "Statement prepared.\n";
} 
else
{
      echo "Statement could not be prepared.\n";
      die( print_r( sqlsrv_errors(), true));
}

/* Execute the statement. */
if( sqlsrv_execute( $stmt))
{
      echo "Statement executed.\n";
}
else
{
      echo "Statement could not be executed.\n";
      die( print_r( sqlsrv_errors(), true));
}

/* Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>

Siehe auch

Aufgaben

Vorgehensweise: Durchführen parametrisierter Abfragen
Vorgehensweise: Senden von Daten als Stream

Konzepte

Informationen zu den Codebeispielen in der Dokumentation

Weitere Ressourcen

API-Referenz (SQL Server-Treiber für PHP)
Entwurfsaspekte
Verwenden von direktionalen Parametern