Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Ez a témakör a PDO::SQLSRV_ATTR_DIRECT_QUERY attribútum használatát tárgyalja, amely közvetlen utasítás-végrehajtást biztosít az előkészített utasítás-végrehajtás alapértelmezett alternatívájaként. Az előkészített utasítás használata jobb teljesítményt eredményezhet, ha az utasítást többször hajtja végre paraméterkötés használatával.
Megjegyzések
Ha közvetlenül a kiszolgálóra szeretne küldeni egy Transact-SQL utasítást anélkül, hogy az illesztőprogram utasítás-előkészítést végzett volna, beállíthatja az OEM::SQLSRV_ATTR_DIRECT_QUERY attribútumot az OEM::setAttribute (vagy az oem::__construct)-nak átadott illesztőprogramként, vagy amikor meghívja az OEM::p repare parancsot. Alapértelmezés szerint a PDO::SQLSRV_ATTR_DIRECT_QUERY értéke Hamisra van állítva (az előkészített utasítások végrehajtását használja).
Ha PDO::query parancsot használ, érdemes lehet közvetlen végrehajtást végeznie. Az OEM::query hívása előtt hívja meg az OEM::setAttribute parancsot , és állítsa be az OEM::SQLSRV_ATTR_DIRECT_QUERY értéke Igaz értékre. Minden egyes PDO::query hívás végrehajtható a PDO::SQLSRV_ATTR_DIRECT_QUERY más beállításával.
Ha PDO::p repare és PDOStatement::execute parancsot használ egy lekérdezés többszöri végrehajtásához kötött paraméterekkel, az előkészített utasítás-végrehajtás optimalizálja az ismétlődő lekérdezés végrehajtását. Ebben az esetben hívja meg a PDO::prepare parancsot, és állítsa a driver opció tömbparamétereként megadott PDO::SQLSRV_ATTR_DIRECT_QUERY értéket False-ra. Szükség esetén az előkészített utasításokat úgy hajthatja végre, hogy a PDO::SQLSRV_ATTR_DIRECT_QUERY hamis értékre van állítva.
Az oem::p repare hívása után az oem::SQLSRV_ATTR_DIRECT_QUERY értéke nem módosítható az előkészített lekérdezés végrehajtásakor.
Ha egy lekérdezéshez az előző lekérdezésben beállított környezet szükséges, hajtsa végre a lekérdezéseket a PDO::SQLSRV_ATTR_DIRECT_QUERY értékét Igazra állítva. Ha például ideiglenes táblákat használ a lekérdezésekben, a PDO::SQLSRV_ATTR_DIRECT_QUERY értékét True-ra kell állítani.
Az alábbi példa azt mutatja, hogy amikor szükség van egy előző utasítás környezetére, be kell állítania a PDO::SQLSRV_ATTR_DIRECT_QUERY értékét igazra. Ez a minta ideiglenes táblákat használ, amelyek csak a lekérdezések közvetlen végrehajtásakor érhetők el a program későbbi utasításai számára.
Megjegyzés:
Ha a lekérdezés egy tárolt eljárás meghívására szolgál, és ebben a tárolt eljárásban ideiglenes táblákat használ, használja helyette az OEM::exec parancsot.
<?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");
?>
Lásd még:
Programozási útmutató a Microsoft által az SQL Serverhez készült PHP-illesztőprogramokhoz