Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
SQL lekérdezést futtat, és eredményhalmazt ad vissza PDOStatement objektumként.
Syntax
PDOStatement PDO::query ($statement[, $fetch_style);
Paraméterek
$statement: Az SQL utasítás, amit futtatni szeretnél.
$fetch_style: Az opcionális utasítások a lekérdezés végrehajtásához. További részletekért tekintse meg a Megjegyzések szakaszt. $ fetch_style a PDO::query verzióban felülírható a PDO::fetch értékű $fetch_style segítségével.
Visszaadott érték
Ha a hívás sikeres lesz, a PDO::query egy PDOStatement objektumot ad vissza. Ha a hívás meghibásodik, a PDO::query egy PDOException objektumot dob vagy false rendszert ad vissza, a PDO::ATTR_ERRMODE beállításaitól függően.
Kivételek
PDOException.
Remarks
A PDO::query segítségével végrehajtott lekérdezés akár előkészített utasítást, akár közvetlenül végrehajthat, a PDO::SQLSRV_ATTR_DIRECT_QUERY beállításaitól függően. További információért lásd: Direct Statement Execution és Prepared Statement Execution in the PDO_SQLSRV Driver.
PDO::SQLSRV_ATTR_QUERY_TIMEOUT a PDO::exec viselkedését is befolyásolja; további információért lásd: PDO::setAttribute.
Az alábbi opciókat megadhatja fetch_style dollárért.
| Style | Description |
|---|---|
| PDO::FETCH_COLUMN, num | Adatlekérdezések a megadott oszlopban. A táblázat első oszlopa a 0. oszlop. |
| PDO::FETCH_CLASS, 'classname', array( arglist ) | Létrehoz egy osztály példányát, és oszlopneveket rendel az osztály tulajdonságaihoz. Ha az osztálykonstruktor egy vagy több paramétert vesz fel, akkor arglistát is átadhatsz. |
| PDO::FETCH_CLASS, 'osztálynév' | Oszlopneveket rendel egy meglévő osztály tulajdonságaihoz. |
Hívjuk a PDOStatement::closeCursort, hogy felszabadítsa a PDOStatement objektumhoz tartozó adatbázis-erőforrásokat, mielőtt újra hívnánk a PDO::query-t.
Egy PDOStatement objektumot nullra állítva zárhatod le.
Ha az eredményhalmazban lévő összes adat nem kerül elő, a következő PDO::query hívás nem bukik meg.
A PDO támogatását a Microsoft Drivers for PHP for SQL Server 2.0-s verziójában adták hozzá.
Lekérdezéspélda
Ez a példa több lekérdezést mutat.
<?php
$database = "AdventureWorks";
$conn = new PDO( "sqlsrv:server=(local) ; Database = $database", "", "");
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$conn->setAttribute( PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 1 );
$query = 'select * from Person.ContactType';
// simple query
$stmt = $conn->query( $query );
while ( $row = $stmt->fetch( PDO::FETCH_ASSOC ) ){
print_r( $row['Name'] ."\n" );
}
echo "\n........ query for a column ............\n";
// query for one column
$stmt = $conn->query( $query, PDO::FETCH_COLUMN, 1 );
while ( $row = $stmt->fetch() ){
echo "$row\n";
}
echo "\n........ query with a new class ............\n";
$query = 'select * from HumanResources.Department order by GroupName';
// query with a class
class cc {
function __construct( $arg ) {
echo "$arg";
}
function __toString() {
return $this->DepartmentID . "; " . $this->Name . "; " . $this->GroupName;
}
}
$stmt = $conn->query( $query, PDO::FETCH_CLASS, 'cc', array( "arg1 " ));
while ( $row = $stmt->fetch() ){
echo "$row\n";
}
echo "\n........ query into an existing class ............\n";
$c_obj = new cc( '' );
$stmt = $conn->query( $query, PDO::FETCH_INTO, $c_obj );
while ( $stmt->fetch() ){
echo "$c_obj\n";
}
$stmt = null;
?>
Sql_variant példa
Ez a kódminta bemutatja, hogyan hozhatunk létre sql_variant típusból álló táblát, és hogyan lehet betölteni a beillesztett adatokat.
<?php
$server = 'serverName';
$dbName = 'databaseName';
$uid = 'yourUserName';
$pwd = 'yourPassword';
$conn = new PDO("sqlsrv:server=$server; database = $dbName", $uid, $pwd);
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
try {
$tableName = 'testTable';
$query = "CREATE TABLE $tableName ([c1_int] sql_variant, [c2_varchar] sql_variant)";
$stmt = $conn->query($query);
unset($stmt);
$query = "INSERT INTO [$tableName] (c1_int, c2_varchar) VALUES (1, 'test_data')";
$stmt = $conn->query($query);
unset($stmt);
$query = "SELECT * FROM $tableName";
$stmt = $conn->query($query);
$result = $stmt->fetch(PDO::FETCH_ASSOC);
print_r($result);
unset($stmt);
unset($conn);
} catch (Exception $e) {
echo $e->getMessage();
}
?>
A várható kimenet a következő lenne:
Array
(
[c1_int] => 1
[c2_varchar] => test_data
)