Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Извлекает следующую строку данных в виде массива с числовым индексом и (или) ассоциативного массива.
Синтаксис
sqlsrv_fetch_array( resource $stmt[, int $fetchType [, row[, ]offset]])
Параметры
$stmt: ресурс инструкции, соответствующий выполненной инструкции.
$fetchType (необязательно): предопределенная константа. Этот параметр может принимать одно из значений, содержащихся в следующей таблице.
| значение | Описание |
|---|---|
| SQLSRV_FETCH_NUMERIC | Следующая строка данных возвращается в виде числового массива. |
| SQLSRV_FETCH_ASSOC | Следующая строка данных возвращается в виде ассоциативного массива. Ключами массива являются имена столбцов в результирующем наборе. |
| SQLSRV_FETCH_BOTH | Следующая строка данных возвращается в виде как числового массива, так и ассоциативного массива. Это значение по умолчанию. |
row (необязательно): добавлено в версии 1.1. Одно из следующих значений, определяющее строку, к которой требуется получить доступ в результирующем наборе, использующем прокручиваемый курсор. (Если вы указываете row, необходимо явно указать fetchtype, даже если вы используете значение по умолчанию.)
- SQLSRV_SCROLL_NEXT
- SQLSRV_SCROLL_PRIOR
- SQLSRV_SCROLL_FIRST
- SQLSRV_SCROLL_LAST
- SQLSRV_SCROLL_ABSOLUTE
- SQLSRV_SCROLL_RELATIVE
Дополнительные сведения об этих значениях см. в статье Указание типа курсора и выбор строк. Поддержка прокручиваемого курсора добавлена в версии 1.1 драйверов Майкрософт для PHP для SQL Server.
offset (необязательно): используется с SQLSRV_SCROLL_ABSOLUTE и SQLSRV_SCROLL_RELATIVE для указания извлекаемой строки. Первой записью в результирующем наборе является 0.
Возвращаемое значение
Если извлечена строка данных, возвращается массив . Если больше нет строк для извлечения, возвращается значение null . Если произошла ошибка, возвращается значение false .
В зависимости от значения параметра $fetchType , возвращаемый массив может быть массивомс числовым индексом и (или) ассоциативным массивом. По умолчанию возвращается массив с числовыми и ассоциативными ключами. Для значения в возвращенном массиве используется тип данных PHP по умолчанию. Дополнительные сведения о типах данных PHP по умолчанию см. в статье Default PHP Data Types.
Замечания
Если возвращается столбец без имени, то ассоциативным ключом для данного элемента массива будет пустая строка (""). Например, рассмотрим эту инструкцию Transact-SQL, которая вставляет значение в таблицу базы данных и извлекает созданный сервером первичный ключ:
INSERT INTO Production.ProductPhoto (LargePhoto) VALUES (?);
SELECT SCOPE_IDENTITY()
Если результирующий набор, возвращаемый частью SELECT SCOPE_IDENTITY() этой инструкции, извлекается в виде ассоциативного массива, ключом для возвращенного значения будет пустая строка (""), так как возвращаемый столбец не имеет имени. Чтобы избежать этого, можно извлечь результат в виде числового массива или указать имя возвращаемого столбца в инструкции Transact-SQL. Ниже приведена одна из инструкций для указания имени столбца в Transact-SQL.
SELECT SCOPE_IDENTITY() AS PictureID
Если результирующий набор содержит несколько столбцов без имени, значение последнего столбца без имени присваивается ключу пустой строки ("").
Пример ассоциативного массива
Следующий пример извлекает каждую строку результирующего набора в виде ассоциативного массива. В примере предполагается, что SQL Server и база данных AdventureWorks установлены на локальном компьютере. При выполнении примера из командной строки все выходные данные выводятся в консоль.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Set up and execute the query. */
$tsql = "SELECT FirstName, LastName
FROM Person.Contact
WHERE LastName='Alan'";
$stmt = sqlsrv_query( $conn, $tsql);
if( $stmt === false)
{
echo "Error in query preparation/execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Retrieve each row as an associative array and display the results.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
{
echo $row['LastName'].", ".$row['FirstName']."\n";
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
Пример индексированного массива
Следующий пример извлекает каждую строку результирующего набора в виде массива с числовым индексом.
Пример извлекает из таблицы Purchasing.PurchaseOrderDetail базы данных AdventureWorks сведения о продуктах с определенной датой и запасом (StockQty) меньше указанного значения.
В примере предполагается, что SQL Server и базы данных AdventureWorks установлены на локальном компьютере. При выполнении примера из командной строки все выходные данные выводятся в консоль.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Define the query. */
$tsql = "SELECT ProductID,
UnitPrice,
StockedQty
FROM Purchasing.PurchaseOrderDetail
WHERE StockedQty < 3
AND DueDate='2002-01-29'";
/* Execute the query. */
$stmt = sqlsrv_query( $conn, $tsql);
if ( $stmt )
{
echo "Statement executed.\n";
}
else
{
echo "Error in statement execution.\n";
die( print_r( sqlsrv_errors(), true));
}
/* Iterate through the result set printing a row of data upon each
iteration.*/
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC))
{
echo "ProdID: ".$row[0]."\n";
echo "UnitPrice: ".$row[1]."\n";
echo "StockedQty: ".$row[2]."\n";
echo "-----------------\n";
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt);
sqlsrv_close( $conn);
?>
Функция sqlsrv_fetch_array всегда возвращает данные в соответствии с Default PHP Data Types. (Дополнительные сведения об указании типа данных PHP см. в статье How to: Specify PHP Data Types.)
Если извлекается поле без имени, то ассоциативным ключом для данного элемента массива будет пустая строка (""). Дополнительные сведения см. в статье sqlsrv_fetch_array.
См. также
Справочник по API для драйвера SQLSRV
Информация о примерах кода в документации
Руководство по программированию драйверов Microsoft для PHP для SQL Server