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