sqlsrv_query

PHP sürücüsünü indirme

Bir ifade hazırlayır ve yürütür.

Syntax

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

Parameters

$conn: Hazırlanan ifade ile ilişkili bağlantı kaynağı.

$tsql: Hazırlanmış ifadeye karşılık gelen Transact-SQL ifade.

$params [ISTEĞE BAĞLI]: Parametrizlenmiş sorgudaki parametrelere karşılık gelen bir değer dizisi . Dizinin her elemanı aşağıdakilerden biri olabilir:

  • Kelimenin tam anlamıyla bir değer.

  • Bir PHP değişkeni.

  • Aşağıdaki yapıya sahip bir dizi :

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

    Dizinin her elemanı için açıklama aşağıdaki tabloda yer almaktadır:

    Öğe Description
    $value Bir literal değer, bir PHP değişkeni veya bir PHP referans değişkeni.
    $direction[ISTEĞE BAĞLI] Parametre yönünü belirtmek için kullanılan aşağıdaki SQLSRV_PARAM_* sabitlerinden biri: SQLSRV_PARAM_IN, SQLSRV_PARAM_OUT, SQLSRV_PARAM_INOUT. Varsayılan değer SQLSRV_PARAM_IN.

    PHP sabitleri hakkında daha fazla bilgi için Constants (Microsoft Drivers for PHP for SQL Server) bölümüne bakınız.
    $phpType[ISTEĞE BAĞLI] Geri dönen değerin PHP veri tipini belirten bir SQLSRV_PHPTYPE_* saiti.

    PHP sabitleri hakkında daha fazla bilgi için Constants (Microsoft Drivers for PHP for SQL Server) bölümüne bakınız.
    $sqlType[ISTEĞE BAĞLI] Giriş değerinin SQL Server veri tipini belirten bir SQLSRV_SQLTYPE_* sabitidir.

    PHP sabitleri hakkında daha fazla bilgi için Constants (Microsoft Drivers for PHP for SQL Server) bölümüne bakınız.

$options [ISTEĞE BAĞLI]: Sorgu özelliklerini belirleyen ilişkilendirilebilir bir dizi. Bu, sqlsrv_prepare tarafından desteklenen aynı anahtar listesidir.

Dönüş Değeri

Bir ifade kaynağı. Eğer ifade oluşturulamazsa ve/veya çalıştırılamaysa, false geri döner.

Remarks

sqlsrv_query fonksiyonu tek seferlik sorgular için oldukça uygundur ve özel durumlar geçerli olmadıkça sorguları çalıştırmak için varsayılan tercih olmalıdır. Bu fonksiyon, minimum kod miktarıyla bir sorgu yürütmek için daha sade bir yöntem sağlar. sqlsrv_query fonksiyonu hem ifade hazırlama hem de ifade yürütme işlemlerini yapar ve parametreli sorguları yürütmek için kullanılabilir.

Daha fazla bilgi için bkz. Nasıl Alınır: SQLSRV Sürücüsü Kullanarak Çıkış Parametrelerini Alın.

Örnek 1

Aşağıdaki örnekte, AdventureWorks veritabanının Sales.SalesOrderDetail tablosuna tek bir satır eklenmiştir. Örnekte SQL Server ve AdventureWorks veritabanının yerel bilgisayarda yüklü olduğu varsayılır. Örnek komut satırından çalıştırıldığında tüm çıkış konsola yazılır.

Note

Aşağıdaki örnek, tek seferlik bir ifade uygulaması için sqlsrv_query kullanımını göstermek için bir INSERT ifade kullansa da, bu kavram herhangi bir Transact-SQL ifadesi için geçerlidir.

<?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 the parameterized query. */  
$tsql = "INSERT INTO Sales.SalesOrderDetail   
        (SalesOrderID,   
         OrderQty,   
         ProductID,   
         SpecialOfferID,   
         UnitPrice,   
         UnitPriceDiscount)  
        VALUES   
        (?, ?, ?, ?, ?, ?)";  
  
/* Set parameter values. */  
$params = array(75123, 5, 741, 1, 818.70, 0.00);  
  
/* Prepare and execute the query. */  
$stmt = sqlsrv_query($conn, $tsql, $params);  
if ($stmt) {  
    echo "Row successfully inserted.\n";  
} else {  
    echo "Row insertion failed.\n";  
    die(print_r(sqlsrv_errors(), true));  
}  
  
/* Free statement and connection resources. */  
sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  
?>  

Örnek 2

Aşağıdaki örnek, AdventureWorks veritabanındaki Sales.SalesOrderDetail tablosunda bir alanı günceller. Örnekte SQL Server ve AdventureWorks veritabanının yerel bilgisayarda yüklü olduğu varsayılır. Örnek komut satırından çalıştırıldığında tüm çıkış konsola yazılır.

<?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 the parameterized query. */  
$tsql = "UPDATE Sales.SalesOrderDetail   
         SET OrderQty = (?)   
         WHERE SalesOrderDetailID = (?)";  
  
/* Assign literal parameter values. */  
$params = array(5, 10);  
  
/* Execute the query. */  
if (sqlsrv_query($conn, $tsql, $params)) {  
    echo "Statement executed.\n";  
} else {  
    echo "Error in statement execution.\n";  
    die(print_r(sqlsrv_errors(), true));  
}  
  
/* Free connection resources. */  
sqlsrv_close($conn);  
?>  

Note

PHP'nin kayan nokta sayıları için hassasiyet ve doğruluk sağlamak için değerleri ondalık veya sayısal sütuna bağlamak için giriş olarak dizide kullanılması önerilir. Aynı durum bigint sütunları için de geçerlidir, özellikle değerler tam sayı aralığı dışında olduğunda.

Örnek 3

Bu kod örneği, bir ondalık değeri giriş parametresi olarak nasıl bağlanacağını gösterir.

<?php
$serverName = "(local)";
$connectionInfo = array("Database"=>"YourTestDB");  
$conn = sqlsrv_connect($serverName, $connectionInfo);  
if ($conn === false) {  
     echo "Could not connect.\n";  
     die(print_r(sqlsrv_errors(), true));  
}  

// Assume TestTable exists with a decimal field 
$input = "9223372036854.80000";
$params = array($input);
$stmt = sqlsrv_query($conn, "INSERT INTO TestTable (DecimalCol) VALUES (?)", $params);

sqlsrv_free_stmt($stmt);  
sqlsrv_close($conn);  

?>

Örnek 4

Bu kod örneği, sql_variant türden oluşan bir tablo oluşturulmasını ve eklenen veriyi nasıl getireceğini gösterir.

<?php
$server = 'serverName';
$dbName = 'databaseName';
$uid = 'yourUserName';
$pwd = 'yourPassword';

$options = array("Database"=>$dbName, "UID"=>$uid, "PWD"=>$pwd);
$conn = sqlsrv_connect($server, $options);
if($conn === false) {
    die(print_r(sqlsrv_errors(), true));
}

$tableName = 'testTable';
$query = "CREATE TABLE $tableName ([c1_int] sql_variant, [c2_varchar] sql_variant)";

$stmt = sqlsrv_query($conn, $query);
if($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);

$query = "INSERT INTO [$tableName] (c1_int, c2_varchar) VALUES (1, 'test_data')";
$stmt = sqlsrv_query($conn, $query);
if($stmt === false) {
    die(print_r(sqlsrv_errors(), true));
}
sqlsrv_free_stmt($stmt);

$query = "SELECT * FROM $tableName";
$stmt = sqlsrv_query($conn, $query);

if(sqlsrv_fetch($stmt) === false) {
    die(print_r(sqlsrv_errors(), true));
}

$col1 = sqlsrv_get_field($stmt, 0);
echo "First field:  $col1 \n";

$col2 = sqlsrv_get_field($stmt, 1);
echo "Second field:  $col2 \n";

sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

?>

Beklenen çıktı şu olurdu:

First field:  1
Second field:  test_data

Ayrıca Bkz.

SQLSRV Sürücü API'si Başvurusu

Nasıl yapılır: Parametreli Sorgular Gerçekleştirme

Belgelerde Kod Örnekleri Hakkında

Nasıl yapılır: Akış Olarak Veri Gönderme

Yön Parametrelerini Kullanma