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.
PDO::SQLSRV_ATTR_DIRECT_QUERY özniteliğinin, varsayılan olan hazırlanan deyim yürütme yerine doğrudan deyim yürütmesini belirtmek için kullanımı açıklanmaktadır. Deyimin parametre bağlaması kullanılarak birden çok kez yürütülmesi durumunda hazırlanmış bir deyimin kullanılması daha iyi performansa neden olabilir.
Açıklamalar
Bir Transact-SQL deyimini sürücü tarafından hazırlık yapılmadan doğrudan sunucuya göndermek istiyorsanız, PDO::SQLSRV_ATTR_DIRECT_QUERY özniteliğini PDO::setAttribute ile (ya da PDO::__construct'a geçirilen bir sürücü seçeneği olarak) veya PDO::prepare çağrısı yaptığınızda ayarlayabilirsiniz. Varsayılan olarak, PDO::SQLSRV_ATTR_DIRECT_QUERY değeri False'tur (hazırlanmış deyim yürütmeyi kullanın).
PDO::query kullanıyorsanız, doğrudan yürütme isteyebilirsiniz. PDO::query'yi çağırmadan önce PDO::setAttribute öğesini çağırıp PDO::SQLSRV_ATTR_DIRECT_QUERY değerini True olarak ayarlayın. PDO::query'ye yapılan her çağrı PDO::SQLSRV_ATTR_DIRECT_QUERY için farklı bir ayar ile yürütülebilir.
Bağlı parametreleri kullanarak bir sorguyu birden çok kez yürütmek için PDO::p repare ve PDOStatement::execute kullanırsanız, hazırlanan deyim yürütme yinelenen sorgunun yürütülmesini iyileştirir. Bu durumda, sürücü seçenekleri dizi parametresinde PDO::SQLSRV_ATTR_DIRECT_QUERY'yi False olarak belirleyerek PDO::prepare çağırın. Gerektiğinde, prepared statements'i PDO::SQLSRV_ATTR_DIRECT_QUERY 'False' olarak ayarlayarak yürütebilirsiniz.
PDO::p repare çağrısı yaptıktan sonra, hazırlanan sorgu yürütülürken PDO::SQLSRV_ATTR_DIRECT_QUERY değeri değiştirilemez.
Bir sorgu önceki sorguda ayarlanan bağlamı gerektiriyorsa, PDO::SQLSRV_ATTR_DIRECT_QUERY true olarak ayarlanmış sorgularınızı yürütebilirsiniz. Örneğin, sorgularınızda geçici tablolar kullanıyorsanız, PDO::SQLSRV_ATTR_DIRECT_QUERY True olarak ayarlanmalıdır.
Aşağıdaki örnek, önceki bir deyimin bağlamı gerektiğinde PDO::SQLSRV_ATTR_DIRECT_QUERY değerini True olarak ayarlamanız gerektiğini gösterir. Bu örnek, yalnızca sorgular doğrudan yürütülürken programınızdaki sonraki deyimler için kullanılabilen geçici tabloları kullanır.
Uyarı
Sorgu bir saklı yordamı çağırmak içinse ve bu saklı yordamda geçici tablolar kullanılıyorsa, bunun yerine PDO::exec kullanın.
<?php
$conn = new PDO('sqlsrv:Server=(local)', '', '');
$conn->setAttribute(constant('PDO::SQLSRV_ATTR_DIRECT_QUERY'), true);
$stmt1 = $conn->query("DROP TABLE #php_test_table");
$stmt2 = $conn->query("CREATE TABLE #php_test_table ([c1_int] int, [c2_int] int)");
$v1 = 1;
$v2 = 2;
$stmt3 = $conn->prepare("INSERT INTO #php_test_table (c1_int, c2_int) VALUES (:var1, :var2)");
if ($stmt3) {
$stmt3->bindValue(1, $v1);
$stmt3->bindValue(2, $v2);
if ($stmt3->execute())
echo "Execution succeeded\n";
else
echo "Execution failed\n";
}
else
var_dump($conn->errorInfo());
$stmt4 = $conn->query("DROP TABLE #php_test_table");
?>
Ayrıca Bkz.
SQL Server için PHP için Microsoft Sürücüleri Programlama Kılavuzu