Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft Drivers for PHP for SQL Server, PHP betiklerinden Microsoft SQL Database Engine'de veri okumanızı ve yazmanızı sağlayan PHP eklentileridir. Paket, aynı Microsoft ODBC Driver for SQL Server'ı saran ve aynı bağlantı seçeneklerini paylaşan iki sürücü gönderiyor, böylece kod tabanınıza uygun API'yi seçebilirsiniz:
-
SQLSRV, SQL Server özelliklerine uyarlanmış prosedürel bir API (
sqlsrv_*fonksiyonlar) sunar. - PDO_SQLSRV, PHP Veri Nesneleri (PDO) arayüzünü uygular, böylece diğer veritabanları için zaten PDO kullanan kod minimum değişiklikle SQL Server hedefleyebilir.
Her iki sürücü de Azure SQL Veritabanı'e, Microsoft Fabric'teki SQL veritabanı, Azure SQL Yönetilen Örneği'a ve desteklenen tüm SQL Server sürümlerine (Express sürümleri dahil) bağlanır. PHP akışlarını kullanarak büyük ikili ve karakter değerleri tamamen belleğe yüklemeden taşınıyorlar.
Başlangıç noktanızı seçin
| Goal | Buradan başlayın |
|---|---|
| Bir PHP geliştirme ortamı kurun ve ilk sorguyu çalıştırın | Adım 1: Geliştirme ortamını yapılandırmak, ardından Adım 2: SQL veritabanı oluşturmak ve Adım 3: PHP kullanarak SQL'e bağlanmak için kavram kanıtı. |
| Sürücüyü Linux veya macOS'a yükleyin | Linux ve macOS için kurulum eğitimi ve SQL Server için PHP için Microsoft Sürücülerini indirin. |
| Şifresiz kimlik doğrulama ile Azure SQL'e bağlanın | Microsoft Entra kimlik doğrulama ve Bağlantı seçenekleriyle bağlanın. |
| Mevcut bir uygulamayı geçici arızalara karşı dayanıklı hale getirmek | Boşta bağlantı dayanıklılığı ve Adım 4: PHP ile SQL'e dayanıklı bağlanın. |
| SQLSRV ile PDO_SQLSRV arasında karar verin | SQL Server için PHP için Microsoft Sürücülerinin Genel Görünümü ve Yürütme Fonksiyonlarının Karşılaştırılması. |
| Bir kurulum, bağlantı veya sorgulama sorununu teşhis edin | Sorun giderme, hatalar ve uyarılar işleme, ve faaliyetleri kaydetme. |
| Mevcut bir uygulamayı daha hızlı hale getir | Performans ayarı. |
Hızlı bağlantı
Aşağıdaki bölüm, çalışan bir PHP kurulumunun SQL Server veya Azure SQL ile çalıştırabileceği en kısa uçtan uca bağlantıdır. Bir sonraki bölümdeki üretim temeline geçmeden önce sürücünüzün, ODBC bağımlılıklarınızın ve ağ yolunun kablolu olduğunu doğrulamak için kullanın.
<?php
$server = getenv('SQL_SERVER') ?: 'localhost';
$database = getenv('SQL_DATABASE') ?: 'master';
$user = getenv('SQL_USER');
$password = getenv('SQL_PASSWORD');
$dsn = "sqlsrv:Driver={ODBC Driver 18 for SQL Server};Server=$server;Database=$database;Encrypt=true";
$pdo = new PDO($dsn, $user, $password, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
foreach ($pdo->query('SELECT @@VERSION AS version') as $row) {
echo $row['version'], PHP_EOL;
}
Azure SQL'e karşı şifresiz bağlantı için, DSN'e (yönetilen kimlik) veya başka bir değer ekleyin Authentication=ActiveDirectoryMsi ve argümanları $user/$password çıkarın.Authentication Takip eden üretim temel çizgisi aynı deseni tekrarlar, zaman aşımları ve tanılamalarla genişletir.
Kendi kendine imzalanmış sertifika Encrypt=true kullanan yerel SQL Server için doğrulama başarısız olur. Sadece yerel gelişim için ekleyin TrustServerCertificate=true . Üretim alternatifleri için TLS sertifika hatalarına bakınız.
Azure SQL için üretim temeli
Bu snippeti, PDO_SQLSRV sürücüsüyle üretim odaklı Azure SQL bağlantı için bir başlangıç noktası olarak kullanın. Sunucu ve veritabanını ortam değişkenlerinden (örneğin Azure App Service uygulama ayarlarından) okur, yönetilen bir kimlik ile kimlik doğrulamasını sağlar, sunucu sertifikası doğrulamasıyla Taşıma Katmanı Güvenliği'ni (TLS) etkinleştirir, soğuk başlatma devre devremesini kapsayan bir giriş zaman aşımını ayarlar ve SQL Server boşta bağlantı dayanıklılığını ayarlar ConnectRetryCountConnectRetryInterval. Uygulama düzeyindeki connectWithRetry ve queryWithRetry yardımçılar, hem ilk bağlantıyı hem de her ifadeyi sınırlı üstel geri dönüşle sarar ve geçici bağlantı hatalarını (yeni bağlantı gerektiren) geçici sorgu hatalarından (aynı bağlantıyı tekrar kullanan) ayırır.
PHP 8.0 ve daha sonraki sürümleri, PDO_SQLSRV uzantısı ve SQL Server 17.3.1.1 ile daha sonraki sürümler Authentication=ActiveDirectoryMsiiçin Microsoft ODBC Sürücüsü gerektirir. Desteklenen Authentication değerlerin tam listesi için bkz. Connect using Microsoft Entra authentication.
<?php
declare(strict_types=1);
// Transient errors that require a fresh connection to recover. SQLSTATE values
// starting with '08' cover ODBC connection-established and connection-broken
// states (for example, 08001, 08S01).
const CONNECT_RETRY_SQLSTATE_PREFIX = '08';
// SQL Server error codes that are transient regardless of when they surface:
// 1205 (deadlock victim), 1222 (lock request timeout), and the Azure SQL
// throttling, mid-query failover, and "database not currently available"
// codes that arrive with SQLSTATE HY000.
const TRANSIENT_SERVER_ERROR_CODES = [1205, 1222, 40501, 40613, 40197, 10928, 10929, 49918];
/**
* Open a connection, retrying transient failures with exponential backoff.
*/
function connectWithRetry(string $dsn, array $options, int $maxAttempts = 3): PDO
{
for ($attempt = 1; $attempt <= $maxAttempts; $attempt++) {
try {
$pdo = new PDO($dsn, null, null, $options);
error_log(sprintf('connected on attempt %d/%d', $attempt, $maxAttempts));
return $pdo;
} catch (PDOException $e) {
$sqlstate = (string) $e->getCode();
$driverCode = isset($e->errorInfo[1]) ? (int) $e->errorInfo[1] : 0;
$isTransient = str_starts_with($sqlstate, CONNECT_RETRY_SQLSTATE_PREFIX)
|| in_array($driverCode, TRANSIENT_SERVER_ERROR_CODES, true);
if (!$isTransient || $attempt === $maxAttempts) {
error_log(sprintf('connect failed on attempt %d/%d: %s', $attempt, $maxAttempts, $e->getMessage()));
throw $e;
}
$delay = 2 ** ($attempt - 1); // 1, 2, 4 seconds
error_log(sprintf('connect attempt %d hit transient %s/%d; retrying in %d seconds', $attempt, $sqlstate, $driverCode, $delay));
sleep($delay);
}
}
throw new RuntimeException('connectWithRetry exhausted retries');
}
/**
* Run a parameterized query, retrying transient statement failures on the same
* connection. Deadlocks (1205) roll back the transaction before the driver sees
* the error, so rerunning a single statement is safe. If the statement was part
* of a multistatement transaction, wrap the whole transaction in your own retry
* loop so earlier statements replay too.
*/
function queryWithRetry(PDO $pdo, string $sql, array $params = [], int $maxAttempts = 3): PDOStatement
{
for ($attempt = 1; $attempt <= $maxAttempts; $attempt++) {
try {
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
return $stmt;
} catch (PDOException $e) {
$driverCode = isset($e->errorInfo[1]) ? (int) $e->errorInfo[1] : 0;
$isTransient = in_array($driverCode, TRANSIENT_SERVER_ERROR_CODES, true);
if (!$isTransient || $attempt === $maxAttempts) {
error_log(sprintf('query failed on attempt %d/%d: %s', $attempt, $maxAttempts, $e->getMessage()));
throw $e;
}
$delay = 2 ** ($attempt - 1);
error_log(sprintf('query attempt %d hit transient code %d; retrying in %d seconds', $attempt, $driverCode, $delay));
sleep($delay);
}
}
throw new RuntimeException('queryWithRetry exhausted retries');
}
// Load endpoint details from application configuration. In Azure App Service,
// these can come from app settings or Key Vault-backed settings.
$server = getenv('SQL_SERVER') ?: null;
$database = getenv('SQL_DATABASE') ?: null;
if ($server === null || $database === null) {
throw new RuntimeException('Set SQL_SERVER and SQL_DATABASE in your application configuration.');
}
$dsn = sprintf(
'sqlsrv:Driver={ODBC Driver 18 for SQL Server};Server=%s;Database=%s;'
. 'Encrypt=true;TrustServerCertificate=false;'
. 'LoginTimeout=90;Authentication=ActiveDirectoryMsi;'
. 'ConnectRetryCount=5;ConnectRetryInterval=15;'
. 'MultiSubnetFailover=true;',
$server,
$database
);
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::SQLSRV_ATTR_QUERY_TIMEOUT => 30,
];
$pdo = connectWithRetry($dsn, $options);
$stmt = queryWithRetry($pdo, 'SELECT TOP (?) name FROM sys.databases ORDER BY name', [5]);
foreach ($stmt as $row) {
echo $row['name'], PHP_EOL;
}
Bu kod parçacığı, Azure SQL Veritabanı yük devretme grupları ve Azure SQL Yönetilen Örneği için ayarlanmıştır.
Driver={ODBC Driver 18 for SQL Server}ODBC 18 sürücüsünü sabitler. Eğer ana bilgisayarda ODBC 17 de yüklüyse, PDO_SQLSRV ODBC 17'ye bağlanabilir. Eski 17.x derlemeleri yeniAuthenticationdeğerleri reddeder; örneğin,Authentication=ActiveDirectoryMsiODBC 17.3.1.1 veya daha sonraki sürümleri gerektirir. Bkz. 'Authentication' için bağlantı dizesi özniteliği için belirlenen geçersiz değer.ConnectRetryCountveConnectRetryIntervalSQL Server boşta bağlantı dayanıklılığını sağlayan ODBC bağlantı dizesi anahtar kelimeleridir: sürücü, bozuk bir boşta bağlantıyı şeffaf şekilde yeniden bağlar. Bu, uygulama düzeyindekiqueryWithRetry, geçici bir hata ile başarısız olan bir ifadeyi yeniden dener, örneğin çıkmaz veya sorgu zamanlaması gibi. İkisi tamamlayıcı, ikisini de sakla.LoginTimeoutEn azındanConnectRetryCount * ConnectRetryIntervalboşta yeniden bağlantı yolunun tam bütçesini alması için emin olun; örnek, 5 × 15 saniyelik tekrar denemeleri 90 saniye ve soğuk bir failover'da ilk giriş için boşluk kullanır.Uygulama düzeyindeki
error_log()çağrıları sürücü tarafı tanılamalarla tamamlayın. PDO_SQLSRV için,pdo_sqlsrv.log_severityinphp.ini(sadece başlatmada ayarlanabilir); SQLSRV için çalışma zamanında çağrısqlsrv_configure("LogSubsystems", ...). Daha fazla bilgi için Kayıt faaliyetleri bölümünü inceleyebilirsiniz.; php.ini - enable PDO_SQLSRV driver diagnostics alongside the application-level ; error_log() calls in the sample. Use 1 (errors) in production; -1 (all) is ; useful during triage but very chatty. [pdo_sqlsrv] pdo_sqlsrv.log_severity = 1Kullanıcı tarafından atanan yönetilen bir kimlik için, kimliğin kimliğini PDO'nun
$usernameargümanı olarak (new PDO($dsn, $identityId, null, $options)) geçirin. Azure App Service veya Azure Container Instance'da kimliğin istemci kimliğini kullanın; aksi takdirde, nesne ID'sini kullanın. PHP sürücüleri bu davranışı altta yatan Microsoft ODBC Driver for SQL Server'dan miras alır; daha fazla bilgi için bkz. ODBC Sürücüsü ile Microsoft Entra ID'nin Kullanılması. PDO_SQLSRVUIDreddi DSN'in içinde olduğundan, yapıcı yuvasını kullanın. Kullanıcı olarak geçişnull(örneğin yaptığı gibi) Azure ana bilgisayarının sistem tarafından atanan yönetilen kimliğini seçer. SQLSRV (prosedural) için, bağlantı seçenekleri diziyi verinUID.Failover grup dinleyicisi, erişilebilirlik grubu dinleyicisi veya failover kümesi örneği uç noktasına bağlandığınızda ayarlanır
MultiSubnetFailover=true. Bu ayar, hem tek alt ağ hem de çoklu alt ağ erişilebilirlik grubu dinleyicileri için bağlantı performansını artırır. Daha fazla bilgi için Yüksek Erişilebilirlik Desteği, felaket kurtarma bölümlerine bakınız.Okuma ölçeklendirmesi veya okunabilir ikincil için Veri Kaynağı Adı (DSN) ekleyin
ApplicationIntent=ReadOnly.Sertifikanın Subject Alternative Name (SAN) bağlandığınız ana bilgisayarı içermediği egemen bulutlar için, DSN'e ekleyin
HostNameInCertificate(örneğin,*.database.usgovcloudapi.netAzure Kamu için).Sürücü, token edinimi için Microsoft ODBC Driver for SQL Server'a dayanır. Yönetilen kimlik, hizmet prensibi ve erişim token akışları hepsi ODBC üzerinden geçer. Daha fazla bilgi için ODBC Sürücüsü ile Microsoft Entra ID'yi kullanma konusuna bakın.
Daha yüksek güvenlik ve ortamlar arasında taşınabilirlik için, bağlantı bilgilerini kodunuzun dışında tutun. Bağlantı bilgilerini uygulamanızın yapılandırma sisteminde saklayın ve hassas değerler ile merkezi yönetilen bağlantı ayarları için Azure Key Vault'u kullanın.
Eşdeğer SQLSRV bağlantısı bir kaynak kullanır
sqlsrv_connect($server, ['Database' => $database, 'Encrypt' => true, 'Authentication' => 'ActiveDirectoryMsi', /* ... */])ve geri döndürür. Yeniden deneme deseni aynı:falsedönüş alsqlsrv_connect, SQLSTATE için inceleyinsqlsrv_errors()ve tekrar denemeden önce geri çekilin. Çalışılmış bir örnek için bkz. Adım 4: PHP ile SQL'e dayanıklı bağlanın.Yeniden deneme yardımcıları
$e->errorInfo[1]korunarakisset()okunur.PDOException::$errorInfoolarak ilan?arrayedilir ve varsayılan olarak ,nullböylece savunma kontrolü bir sürücü koduna0geri dönür ve SQLSTATE08önekinin yeniden deneme yapıp yapmayacağına karar vermesine izin verir.
Bu yapılandırmanın her bölümü hakkında daha fazla bilgi için bkz:
- Bağlantı seçenekleri
- Microsoft Entra kimlik doğrulamayı kullanarak bağlanma
- Boşta bağlantı dayanıklılığı
- Microsoft Azure SQL Veritabanı'na bağlanma
- Yüksek Kullanılabilirlik Desteği, felaket kurtarma
Azure SQL geçici hataların kataloğu için bkz. Geçici bağlantı hatalarını giderme.
Temel özellikler
- İki API, bir sürücü paketi: SQL Server-ilk kod için prosedürel SQLSRV veya taşınabilir PDO kodu için PDO_SQLSRV.
- Geniş platform desteği: Windows, Linux ve macOS ile desteklenen PHP sürümleriyle çalışır.
-
Şifreli bağlantılar: TLS ile şifrelenmiş bağlantılar,
Encrypt=truesunucu sertifikası doğrulaması ile kontrol edilirTrustServerCertificate. - Microsoft Entra ID kimlik doğrulama: Yönetilen kimlik, hizmet prensibi ve erişim tokenı ile şifresiz bağlantılar, SQL Server için altta yatan Microsoft ODBC Sürücüsü üzerinden akar.
- Always Encrypted: Hassas sütunlar için istemci tarafı şifreleme; yerinde işlemler için isteğe bağlı güvenli enklavlarla.
-
Bağlantı dayanıklılığı: ve
ConnectRetryIntervalile yerleşik boşta bağlantı yeniden denemeleriConnectRetryCount. - PHP akışları: Büyük ikili ve karakter değerleri akış olarak okumak ve yazmak, onları belleğe yüklemek yerine.
-
Rich SQL Server veri tipi desteği: datetimeoffset, tablo değerli parametreler, nvarchar ve Unicode ile
PDO::SQLSRV_ENCODING_UTF8.
Get started
| Makale | Description |
|---|---|
| Sistem gereksinimleri | PHP, işletim sistemi ve SQL Server sürümlerini destekledi. |
| Destek matrisi | PHP sürücü sürümleri için ayrıntılı uyumluluk matrisi. |
| SQL Server için PHP için Microsoft Sürücülerini indirin | Bağlantıları indirin ve eserleri yayınlayın. |
| Linux ve macOS için kurulum eğitimi | Sürücüyü ve ODBC ön koşullarını Linux ve macOS'a yükleyin. |
| Sürücülerin yüklenmesi | Genişletmeleri etkinleştirin.php.ini |
| PHP SQL sürücüsüyle başlama | Dört başlangıç adımını birbirine bağlayan uçtan uca bir rehber. |
| PHP SQL sürücüsüne genel bakış | Pakette ne var ve ne zaman SQLSRV veya PDO_SQLSRV seçilmeli. |
Yapılandırma ve bağlanma
| Makale | Description |
|---|---|
| Sunucuya bağlanma | PHP'den bir SQL Server örneğine bağlantı açın. |
| Bağlantı seçenekleri | Bağlantı anahtar kelimeleri, varsayılan noktalar ve nasıl ayarlanacağı için tam referans. |
| Microsoft Azure SQL Veritabanı'na bağlanma | Bir PHP uygulamasını Azure SQL Veritabanı'e bağlayın. |
| Belirli bir porta bağlanın | Varsayılan olmayan bir TCP portunu hedefleyin. |
| Bağlantı havuzu oluşturma | PHP istekleri arasında ODBC bağlantılarını tekrar kullanın. |
| Birden Fazla Aktif Sonuç Setini (MARS) Devre Dışı Bırak | Uyumluluk için MARS'ı kapatın. |
| LocalDB desteği | Bir SQL Server LocalDB örneğine bağlanın. |
| Yüksek Kullanılabilirlik Desteği, felaket kurtarma | Kullanılabilirlik grubu dinleyicileri ve çoklu alt ağ yük devretmesi. |
| Boşta bağlantı dayanıklılığı | Boşta bağlantıların bozulduğu için otomatik yeniden bağlanma. |
Authenticate
| Makale | Description |
|---|---|
| Microsoft Entra kimlik doğrulamayı kullanarak bağlanma | Yönetilen kimlik, hizmet prensibi, erişim tokenı ve şifre akışları. |
| SQL Server kimlik doğrulaması ile bağlanın | SQL girişini kullanıcı adı ve şifre ile kullanın. |
| Windows authentication ile bağlanın | Alan bağlantısı olan ana bilgisayarlarda Windows entegre kimlik doğrulaması kullanın. |
Secure
| Makale | Description |
|---|---|
| Güvenlikle ilgili dikkat edilmesi gerekenler | PHP uygulamaları için tehdit modeli ve derinlemesine savunma rehberi. |
| Her Zaman PHP sürücüleriyle şifrelenmiştir | Hassas sütunlar için istemci tarafı şifrelemesini yapılandırın. |
| Her Zaman Şifreli ile güvenli enklavlar | Güvenli enklavlarla şifrelenmiş sütunlarda zengin işlemleri etkinleştirin. |
Veri alma ve güncelleme
| Makale | Description |
|---|---|
| Program rehberi | Her iki sürücü için uçtan uca programlama rehberi. |
| Yürütme fonksiyonlarının karşılaştırılması | İş yükünüz için doğru yürütme fonksiyonunu seçin. |
| Doğrudan ve hazırlanmış beyanname uygulaması (PDO_SQLSRV) | Doğrudan yürütme yerine hazırlanmış ifadeler ne zaman kullanılacak? |
| Veriler alınıyor | Satırlar, sütunlar ve akış değerleri getirin. |
| Verilerin güncellenmesi | Satır ekle, güncelle ve sil. |
| Parametrizlenmiş sorgular gerçekleştirin | SQL enjeksiyonuna karşı korumak için parametreleri bağlayın. |
| Veri akışı olarak gönder | Büyük ikili ve karakter değerlerini SQL Server'a akın. |
| İşlemler yapma | Cümleleri atomik işlemlere grupla. |
| Tablo değerli parametreler kullanın | Bir TABLE parametreyi depolanmış bir prosedüre ilet. |
| Bir imleç tipi belirtin ve satır seçin | Sadece ileri yönlü, statik, dinamik veya tuş seti imleci seçin. |
Veri türleri
| Makale | Description |
|---|---|
| Veri türlerinin dönüştürülmesi | Sürücünün PHP tiplerini SQL Server tiplerine nasıl eşlediği. |
| Varsayılan SQL Server veri türleri | Her PHP değeri için varsayılan SQL Server türü. |
| Varsayılan PHP veri türleri | Her SQL Server sütun tipi için varsayılan PHP tipi. |
| SQL Server veri türlerini belirt (SQLSRV) | Parametreleri bağlamarken SQL Server tipini geçersiz kılın. |
| PHP veri tiplerini belirt | Getirme sırasında PHP tipini geçersiz kıl. |
| UTF-8 verilerini gönder ve geri getir | Unicode gidiş-dönüş için kullanım PDO::SQLSRV_ENCODING_UTF8 . |
| Linux ve macOS'ta ASCII verilerini gönderin ve alın | Windows olmayan ana bilgisayarlarda ASCII gidiş-dönüş işlemlerini yönetin. |
| Format ondalık ve para (SQLSRV) | SQLSRV sürücüsüyle ondalık ve para sütunlarını biçimlendirin. |
| Biçim ondalık ve para (PDO_SQLSRV) | PDO_SQLSRV sürücüsünü kullanarak ondalık ve para sütunlarını biçimlendirin. |
| Sistem dışı yerel ayarlar | Yerel ondalık ayırıcılar ve diğer yerel değerlendirmeler. |
Hatalar ve tanılamalar
| Makale | Description |
|---|---|
| Hatalar ve uyarılar | Her iki sürücüde de hata ve uyarı yönetimi var. |
| Hata ve uyarı işleme yapılandırması (SQLSRV) | SQLSRV sürücüsünün hata ve uyarıları nasıl bildirdiğini ayarlayın. |
| Hataları ve uyarıları ele alın (SQLSRV) | SQLSRV fonksiyonları tarafından döndürülen hataları inceleyin. |
| Kütük faaliyetleri | Tanı yakalamak için sürücü kaydını etkinleştirin. |
Dağıtım ve işletim
| Makale | Description |
|---|---|
| Performans ayarlama | Bağlantı yönetimi, toplu çalışma, hazırlanmış ifadeler, imleçler, bellek ve sunucu tarafı izleme. |
| Troubleshooting | Yaygın kurulum, bağlantı, sorgu, veri türü, işlem ve konteyner sorunlarını teşhis edin. |
Reference
| Makale | Description |
|---|---|
| SQLSRV sürücü API referansı | Tüm sqlsrv_* fonksiyonlar, parametreler ve döndürme değerleri. |
| PDO_SQLSRV sürücü referansı | PDO ve PDOStatement yöntemleri PDO_SQLSRV sürücüsü tarafından desteklenir. |
| Sabitleri | Sürücüler tarafından ortaya çıkan sabitler, tip ve kodlama sabitleri dahil. |
İlgili görevler
| Makale | Description |
|---|---|
| Sürüm notları | Yeni özellikler, hata düzeltmeleri, platform destek değişiklikleri ve indirme bağlantılarıyla sürüm başına geçmiş. |
| Dokümantasyondaki kod örnekleri hakkında | Bu bölümdeki kod örnekleri tarafından kullanılan konvansiyonlar. |
| PHP SQL sürücüsü için kod örnekleri | SQLSRV ve PDO_SQLSRV için uçtan uca örnek uygulamalar. |
| Destek kaynakları | Topluluk ve destek kanalları. |