Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Kör en SQL-fråga och returnerar en resultatuppsättning som ett PDOStatement-objekt.
Syntax
PDOStatement PDO::query ($statement[, $fetch_style);
Parameters
$statement: SQL-satsen du vill köra.
$fetch_style: De valfria instruktionerna för hur man utför frågan. Mer information finns i avsnittet Kommentarer. $ fetch_style i PDO::query kan åsidosättas med $fetch_style i PDO::fetch.
Returvärde
Om anropet lyckas returnerar PDO::query ett PDOStatement-objekt. Om anropet misslyckas kastar PDO::query ett PDOException-objekt eller returnerar false, beroende på inställningen i PDO::ATTR_ERRMODE.
undantag
PDOException.
Remarks
En fråga som körs med PDO::query kan exekveras antingen som ett förberedt sats eller direkt, beroende på inställningen för PDO::SQLSRV_ATTR_DIRECT_QUERY. För mer information, se Direct Statement Execution och Prepared Statement Execution i PDO_SQLSRV Driver.
PDO::SQLSRV_ATTR_QUERY_TIMEOUT påverkar också PDO::exec; för mer information, se PDO::setAttribute.
Du kan ange följande alternativ för fetch_style dollar.
| Stil | Description |
|---|---|
| PDO::FETCH_COLUMN, num | Förfrågningar efter data i den angivna kolumnen. Den första kolumnen i tabellen är kolumn 0. |
| PDO::FETCH_CLASS, 'classname', array ( arglist ) | Skapar en instans av en klass och tilldelar kolumnnamn till egenskaper i klassen. Om klasskonstruktorn tar en eller flera parametrar kan du också skicka en arglist. |
| PDO::FETCH_CLASS, 'klassnamn' | Tilldelar kolumnnamn till egenskaper i en befintlig klass. |
Anropa PDOStatement::closeCursor för att frigöra databasresurser kopplade till PDOStatement-objektet innan du anropar PDO::query igen.
Du kan stänga ett PDOStatement-objekt genom att sätta det till null.
Om all data i en resultatmängd inte hämtas kommer nästa PDO::query-anrop inte att misslyckas.
Stöd för PDO lades till i version 2.0 av Microsoft Drivers för PHP för SQL Server.
Frågeexempel
Detta exempel visar flera frågor.
<?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 exempel
Detta kodexempel visar hur man skapar en tabell med sql_variant typer och hämtar den insatta datan.
<?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();
}
?>
Den förväntade produktionen skulle vara:
Array
(
[c1_int] => 1
[c2_varchar] => test_data
)