Delen via


Procedure: SQL Server-gegevenstypen opgeven wanneer u het SQLSRV-stuurprogramma gebruikt

PHP-stuurprogramma downloaden

In dit onderwerp ziet u hoe u het SQLSRV-stuurprogramma gebruikt om het SQL Server-gegevenstype op te geven voor gegevens die naar de server worden verzonden. Dit onderwerp is niet van toepassing wanneer u het PDO_SQLSRV stuurprogramma gebruikt.

Als u het gegevenstype SQL Server wilt opgeven, moet u de optionele $params matrix gebruiken wanneer u een query voorbereidt of uitvoert waarmee gegevens worden ingevoegd of bijgewerkt. Zie sqlsrv_query of sqlsrv_prepare voor meer informatie over de structuur en syntaxis van de $params matrix.

In de volgende stappen wordt uitgelegd hoe u het SQL Server-gegevenstype opgeeft bij het verzenden van gegevens naar de server:

Opmerking

Als er geen SQL Server-gegevenstype is opgegeven, worden standaardtypen gebruikt. Zie Standaard SQL Server-gegevenstypen voor informatie over standaard SQL Server-gegevenstypen.

  1. Definieer een Transact-SQL query waarmee gegevens worden ingevoegd of bijgewerkt. Gebruik vraagtekens (?) als tijdelijke aanduidingen voor parameterwaarden in de query.

  2. Initialiseer of werk PHP-variabelen bij die overeenkomen met de tijdelijke aanduidingen in de Transact-SQL query.

  3. Maak de $params matrix die moet worden gebruikt bij het voorbereiden of uitvoeren van de query. Houd er rekening mee dat elk element van de $params matrix ook een matrix moet zijn wanneer u het gegevenstype SQL Server opgeeft.

  4. Geef het gewenste SQL Server-gegevenstype op met behulp van de juiste SQLSRV_SQLTYPE_* -constante als de vierde parameter in elke submatrix van de $params matrix. Zie de sectie SQLTYPEs van Constanten (Microsoft-stuurprogramma's voor PHP voor SQL Server) voor een volledige lijst met de SQLSRV_SQLTYPE_*-constanten. In de onderstaande code worden bijvoorbeeld $changeDate, $rate en $payFrequency respectievelijk opgegeven als de SQL Server types datetime, money en tinyint in de $params array. Omdat er geen SQL Server-type is opgegeven voor $employeeId en wordt geïnitialiseerd op een geheel getal, wordt het standaard sql Server-type integer gebruikt.

    $employeeId = 5;  
    $changeDate = "2005-06-07";  
    $rate = 30;  
    $payFrequency = 2;  
    $params = array(  
                array($employeeId, null),  
                array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),  
                array($rate, null, null, SQLSRV_SQLTYPE_MONEY),  
                array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)  
              );  
    

Example

In het volgende voorbeeld worden gegevens ingevoegd in de tabel HumanResources.EmployeePayHistory van de AdventureWorks-database. SQL Server-typen worden opgegeven voor de parameters $changeDate, $rate en $payFrequency . Het standaardtype SQL Server wordt gebruikt voor de parameter $employeeId . Om te controleren of de gegevens zijn ingevoegd, worden dezelfde gegevens opgehaald en weergegeven.

In dit voorbeeld wordt ervan uitgegaan dat SQL Server en de AdventureWorks-database op de lokale computer zijn geïnstalleerd. Alle uitvoer wordt naar de console geschreven wanneer het voorbeeld via de opdrachtregel wordt uitgevoerd.

<?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));  
}  
  
/* Define the query. */  
$tsql1 = "INSERT INTO HumanResources.EmployeePayHistory (EmployeeID,  
                                                        RateChangeDate,  
                                                        Rate,  
                                                        PayFrequency)  
           VALUES (?, ?, ?, ?)";  
  
/* Construct the parameter array. */  
$employeeId = 5;  
$changeDate = "2005-06-07";  
$rate = 30;  
$payFrequency = 2;  
$params1 = array(  
               array($employeeId, null),  
               array($changeDate, null, null, SQLSRV_SQLTYPE_DATETIME),  
               array($rate, null, null, SQLSRV_SQLTYPE_MONEY),  
               array($payFrequency, null, null, SQLSRV_SQLTYPE_TINYINT)  
           );  
  
/* Execute the INSERT query. */  
$stmt1 = sqlsrv_query($conn, $tsql1, $params1);  
if( $stmt1 === false )  
{  
     echo "Error in execution of INSERT.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve the newly inserted data. */  
/* Define the query. */  
$tsql2 = "SELECT EmployeeID, RateChangeDate, Rate, PayFrequency  
          FROM HumanResources.EmployeePayHistory  
          WHERE EmployeeID = ? AND RateChangeDate = ?";  
  
/* Construct the parameter array. */  
$params2 = array($employeeId, $changeDate);  
  
/*Execute the SELECT query. */  
$stmt2 = sqlsrv_query($conn, $tsql2, $params2);  
if( $stmt2 === false )  
{  
     echo "Error in execution of SELECT.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
  
/* Retrieve and display the results. */  
$row = sqlsrv_fetch_array( $stmt2 );  
if( $row === false )  
{  
     echo "Error in fetching data.\n";  
     die( print_r( sqlsrv_errors(), true));  
}  
echo "EmployeeID: ".$row['EmployeeID']."\n";  
echo "Change Date: ".date_format($row['RateChangeDate'], "Y-m-d")."\n";  
echo "Rate: ".$row['Rate']."\n";  
echo "PayFrequency: ".$row['PayFrequency']."\n";  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt1);  
sqlsrv_free_stmt($stmt2);  
sqlsrv_close($conn);  
?>  

Zie ook

Gegevens ophalen

Informatie over codevoorbeelden in de documentatie

Procedure: PHP-gegevenstypen opgeven

Gegevenstypen converteren

Procedure: UTF-8-gegevens verzenden en ophalen met behulp van Built-In UTF-8-ondersteuning