Php sqlsrv fetch all

PHP
Использование SQLSRV

Драйвер SQLSRV является поддерживаемым Microsoft расширением PHP, которое позволяет вам обращаться к базам данных Microsoft SQL Server и SQL Azure. Это альтернатива для драйверов MSSQL, которые устарели от PHP 5.3 и были удалены с PHP 7.

Расширение SQLSRV можно использовать в следующих операционных системах:

  • Windows Vista с пакетом обновления 2 или более поздней версии
  • Windows Server 2008 с пакетом обновления 2 или более поздней версии
  • Windows Server 2008 R2
  • Windows 7

Для расширения SQLSRV требуется, чтобы собственный клиент Microsoft SQL Server 2012 был установлен на том же компьютере, на котором запущен PHP. Если основной клиент Microsoft SQL Server 2012 еще не установлен, щелкните соответствующую ссылку на странице документации «Требования» .

Чтобы загрузить последние версии драйверов SQLSRV, перейдите по ссылке: Загрузить

Полный список системных требований для драйверов SQLSRV можно найти здесь: Системные требования

Пользователи PHP7 могут загрузить последние версии драйверов от GitHub

Драйвер Microsoft® ODBC 13 для SQL Server поддерживает Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016 (Preview), платформу Google Analytics, базу данных Azure SQL и хранилище данных Azure SQL.

Создание соединения

$dbServer = "localhost,1234"; //Name of the server/instance, including optional port number (default is 1433) $dbName = "db001"; //Name of the database $dbUser = "user"; //Name of the user $dbPassword = "password"; //DB Password of that user $connectionInfo = array( "Database" => $dbName, "UID" => $dbUser, "PWD" => $dbPassword ); $conn = sqlsrv_connect($dbServer, $connectionInfo); 

В SQLSRV также есть драйвер PDO. Для подключения с использованием PDO:

$conn = new PDO("sqlsrv:Server=localhost,1234;Database=db001", $dbUser, $dbPassword); 

Создание простого запроса

//Create Connection $conn = sqlsrv_connect($dbServer, $connectionInfo); $query = "SELECT * FROM [table]"; $stmt = sqlsrv_query($conn, $query); 

Примечание: использование квадратных скобок [] заключается в выходе из table слов, поскольку это зарезервированное слово . Они работают так же, как backticks ` делают в MySQL .

Вызов хранимой процедуры

Чтобы вызвать хранимую процедуру на сервере:

$query = ""; //Parameters '?' includes OUT parameters $params = array( array($name, SQLSRV_PARAM_IN), array($age, SQLSRV_PARAM_IN), array($count, SQLSRV_PARAM_OUT, SQLSRV_PHPTYPE_INT) //$count must already be initialised ); $result = sqlsrv_query($conn, $query, $params); 

Создание параметризованного запроса

$conn = sqlsrv_connect($dbServer, $connectionInfo); $query = "SELECT * FROM [users] WHERE [name] = ? AND [password] = ?"; $params = array("joebloggs", "pa55w0rd"); $stmt = sqlsrv_query($conn, $query, $params); 

Если вы планируете использовать один и тот же запрос более одного раза, с разными параметрами, то же самое можно достичь с помощью sqlsrv_prepare() и sqlsrv_execute() , как показано ниже:

$cart = array( "apple" => 3, "banana" => 1, "chocolate" => 2 ); $query = "INSERT INTO [order_items]([item], [quantity]) VALUES(. )"; $params = array(&$item, &$qty); //Variables as parameters must be passed by reference $stmt = sqlsrv_prepare($conn, $query, $params); foreach($cart as $item => $qty) < if(sqlsrv_execute($stmt) === FALSE) < die(print_r(sqlsrv_errors(), true)); >> 

Получение результатов запроса

Существует 3 основных способа получения результатов запроса:

sqlsrv_fetch_array ()

sqlsrv_fetch_array() извлекает следующую строку в виде массива.

$stmt = sqlsrv_query($conn, $query); while($row = sqlsrv_fetch_array($stmt)) < echo $row[0]; $var = $row["name"]; //. >

sqlsrv_fetch_array() имеет необязательный второй параметр для извлечения различных типов массивов: SQLSRV_FETCH_ASSOC , SQLSRV_FETCH_NUMERIC и SQLSRV_FETCH_BOTH (по умолчанию) ; каждый возвращает соответственно ассоциативные, числовые или ассоциативные и числовые массивы.

sqlsrv_fetch_object ()

sqlsrv_fetch_object() извлекает следующую строку в качестве объекта.

$stmt = sqlsrv_query($conn, $query); while($obj = sqlsrv_fetch_object($stmt)) < echo $obj->field; // Object property names are the names of the fields from the query //. > 

sqlsrv_fetch ()

sqlsrv_fetch() делает следующую строку доступной для чтения.

$stmt = sqlsrv_query($conn, $query); while(sqlsrv_fetch($stmt) === true) < $foo = sqlsrv_get_field($stmt, 0); //gets the first field - >

Получение сообщений об ошибках

Когда запрос идет не так, важно получить сообщение об ошибке, которое возвращается драйвером, чтобы определить причину проблемы. Синтаксис:

sqlsrv_errors([int $errorsOrWarnings]); 
ключ Описание
SQLSTATE Состояние, в котором находится драйвер SQL Server / OBDC.
код Код ошибки SQL Server
сообщение Описание ошибки

Обычно используется вышеуказанная функция:

$brokenQuery = "SELECT BadColumnName FROM Table_1"; $stmt = sqlsrv_query($conn, $brokenQuery); if ($stmt === false) < if (($errors = sqlsrv_errors()) != null) < foreach ($errors as $error) < echo "SQLSTATE: ".$error['SQLSTATE']."
"; echo "code: ".$error['code']."
"; echo "message: ".$error['message']."
"; > > >
  • Начало работы с PHP
  • APCu
  • BC Math (бинарный калькулятор)
  • Imagick
  • IMAP
  • JSON
  • Loops
  • PDO
  • PHP MySQLi
  • php mysqli affected rows возвращает 0, когда он должен возвращать положительное целое число
  • PHP Встроенный сервер
  • PHPDoc
  • PSR
  • SimpleXML
  • SQLite3
  • Streams
  • URL-адрес
  • UTF-8,
  • WebSockets
  • XML
  • YAML в PHP
  • Автозагрузка грунтовки
  • Альтернативный синтаксис для структур управления
  • Анализ HTML
  • Асинхронное программирование
  • Аутентификация HTTP
  • Безопасность
  • Буферизация вывода
  • Вклад в PHP Core
  • Внедрение зависимости
  • Внесение изменений в Руководство по PHP
  • Волшебные константы
  • Волшебные методы
  • Вывод значения переменной
  • Выполнение по массиву
  • Генераторы
  • закрытие
  • Защитите Remeber Me
  • Интерфейс командной строки (CLI)
  • Использование cURL в PHP
  • Использование MongoDB
  • Использование Redis с PHP
  • Использование SQLSRV
  • Итерация массива
  • Как определить IP-адрес клиента
  • Как разбить URL-адрес
  • Класс Datetime
  • Классы и объекты
  • Клиент SOAP
  • Комментарии
  • Компилировать расширения PHP
  • Компиляция ошибок и предупреждений
  • Константы
  • Контрольные структуры
  • криптография
  • кэш
  • локализация
  • Манипулирование массивом
  • Манипуляции заголовков
  • Массивы
  • Машинное обучение
  • Менеджер зависимостей композитора
  • Многопоточное расширение
  • многопроцессорная обработка
  • Монго-PHP
  • Область переменных
  • Обработка изображений с помощью GD
  • Обработка исключений и отчетов об ошибках
  • Обработка нескольких массивов вместе
  • Обработка файлов
  • Общие ошибки
  • операторы
  • отладка
  • Отправка электронной почты
  • отражение
  • переменные
  • Переменные Superglobal PHP
  • Печенье
  • Поддержка Unicode в PHP
  • Пространства имен
  • Работа с датами и временем
  • Развертывание докеров
  • Регулярные выражения (regexp / PCRE)
  • Рекомендации
  • Рецепты
  • Розетки
  • Сервер SOAP
  • Сериализация
  • Сериализация объектов
  • сессии
  • Соглашения о кодировании
  • Создание PDF-файлов в PHP
  • Спектакль
  • Строковый анализ
  • Структуры данных SPL
  • Тестирование устройства
  • Тип жонглирования и нерегулярные проблемы сравнения
  • Тип подсказки
  • Типы
  • Установка в средах Linux / Unix
  • Установка среды PHP в Windows
  • Фильтры и функции фильтра
  • Форматирование строк
  • функции
  • Функции хеширования пароля
  • Функциональное программирование
  • Черты
  • Чтение данных запроса
  • Шаблоны проектирования

Источник

sqlsrv_fetch

Делает следующую строку в наборе результатов доступной для чтения. Используйте sqlsrv_get_field() для чтения полей строки.

Список параметров

  • SQLSRV_SCROLL_NEXT
  • SQLSRV_SCROLL_PRIOR
  • SQLSRV_SCROLL_FIRST
  • SQLSRV_SCROLL_LAST
  • SQLSRV_SCROLL_ABSOLUTE
  • SQLSRV_SCROLL_RELATIVE

Указывает строку, к которой будет осуществляться доступ, если для параметра строки установлено значение SQLSRV_SCROLL_ABSOLUTE или SQLSRV_SCROLL_RELATIVE . Обратите внимание, что первая строка в наборе результатов имеет индекс 0.

Возвращаемые значения

Возвращает true , если следующая строка набора результатов была успешно получена, false в случае возникновения ошибки и null , если в наборе результатов больше нет строк.

Примеры

Пример #1 Пример использования sqlsrv_fetch()

В следующем примере показано, как получить строку с помощью sqlsrv_fetch() и получить поля строки с помощью sqlsrv_get_field() .

$serverName = «serverName\sqlexpress» ;
$connectionInfo = array( «Database» => «dbName» , «UID» => «username» , «PWD» => «password» );
$conn = sqlsrv_connect ( $serverName , $connectionInfo );
if( $conn === false ) die( print_r ( sqlsrv_errors (), true ));
>

$sql = «SELECT Name, Comment
FROM Table_1
WHERE ReviewID=1″ ;
$stmt = sqlsrv_query ( $conn , $sql );
if( $stmt === false ) die( print_r ( sqlsrv_errors (), true ));
>

// Сделайте первую (и в данном случае единственную) строку набора результатов доступной для чтения.
if( sqlsrv_fetch ( $stmt ) === false ) die( print_r ( sqlsrv_errors (), true ));
>

// Получите поля строки. Индексы полей начинаются с 0 и должны извлекаться по порядку.
// Получение полей строки по имени не поддерживается sqlsrv_get_field.
$name = sqlsrv_get_field ( $stmt , 0 );
echo » $name : » ;

$comment = sqlsrv_get_field ( $stmt , 1 );
echo $comment ;
?>

Смотрите также

  • sqlsrv_get_field() — Получает данные поля из текущей выбранной строки
  • sqlsrv_fetch_array() — Возвращает строку как массив
  • sqlsrv_fetch_object() — Получает следующую строку данных в наборе результатов как объект

User Contributed Notes

Оцените статью