sqlsrv_prepare

Crée une ressource d'instruction associée à la connexion spécifiée.

Cc296181.note(fr-fr,SQL.90).gifRemarque :
Cette fonction est idéale pour exécuter plusieurs requêtes. Pour plus d'informations, consultez Procédure : exécuter une requête à plusieurs reprises.

Syntaxe

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

Paramètres

$conn : ressource de connexion associée à l'instruction créée.

$tsql : expression Transact-SQL correspondant à l'instruction créée.

$params [OPTIONNEL] : array de valeurs correspondant aux paramètres spécifiés dans une requête paramétrable. Chaque élément du tableau peut être de l'un des types suivants :

  • Une valeur littérale.

  • Une référénece à une variable PHP.

  • Un array avec la structure suivante :

    array(&$value [, $direction [, $phpType [, $sqlType]]])
    
    Cc296181.note(fr-fr,SQL.90).gifRemarque :
    Les variables passées en tant que paramètres de requête doivent être passées par référence plutôt que par valeur. Par exemple, passez &$myVariable plutôt que $myVariable. Un avertissement PHP est déclenché lorsqu'une requête avec des paramètres par valeur est exécutée.

    Le tableau suivant décrit ces éléments de tableau :

    Élément Description

    &$value

    Valeur littérale ou référence à une variable PHP.

    $direction [OPTIONNEL]

    L'une des constantes SQLSRV_PARAM_* suivantes utilisées pour spécifier la direction des paramètres : SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. SQLSRV_PARAM_IN est la valeur par défaut.

    $phpType[OPTIONNEL]

    Une constante SQLSRV_PHPTYPE_* qui spécifie le type de données PHP de la valeur retournée.

    $sqlType[OPTIONNEL]

    Une constante SQLSRV_SQLTYPE_* qui spécifie le type de données SQL Server de la valeur d'entrée.

$options [OPTIONNEL] : tableau associatif qui définit les propriétés de la requête. Le tableau ci-dessous répertorie les clés prises en charge et leurs valeurs associées :

Clé Valeurs prises en charge Description

QueryTimeout

Valeur entière positive.

Définit le délai de requête en secondes. Par défaut, le pilote attend indéfiniment les résultats.

SendStreamParamsAtExec

true ou false

true est la valeur par défaut.

Configure le pilote pour envoyer toutes les données de flux au moment de l'exécution (true) ou pour les envoyer par segments (false). true est la valeur par défaut. Pour plus d'informations, consultez sqlsrv_send_stream_data.

Défilement

SQLSRV_CURSOR_FORWARD

SQLSRV_CURSOR_STATIC

SQLSRV_CURSOR_DYNAMIC

SQLSRV_CURSOR_KEYSET

Cette clé est une nouveauté de la version 1.1 du Pilote SQL Server pour PHP.

Pour plus d'informations sur ces valeurs, consultez Spécification d'un type de curseur et sélection de lignes.

Valeur de retour

Ressource d'instruction. Si la ressource d'instruction n'a pas pu être créée, la valeur false est retournée.

Exemple

L'exemple suivant prépare et exécute une instruction. Une fois exécutée (consultez sqlsrv_execute), l'instruction met à jour un champ dans la table Sales.SalesOrderDetail de la base de données AdventureWorks. L'exemple suppose que SQL Server et la base de données AdventureWorks sont installés sur l'ordinateur local. Toutes les données de sortie sont écrites dans la console lorsque l'exemple est exécuté à partir de la ligne de commande.

<?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);
?>

Voir aussi

Tâches

Procédure : exécuter des requêtes paramétrées
Procédure : envoyer des données sous forme de flux

Concepts

À propos des exemples de code dans la documentation

Autres ressources

Référence de l'API (Pilote SQL Server pour PHP)
Considérations relatives à la conception
Utilisation des paramètres directionnels