Как установить pdo mysql windows

Как установить драйверы PDO для PHP на Windows?

Я установил Apache, PHP 5.6 и MySQL 5.7 на сервер Windows.

В php.ini я включил следующее:

(И перезапустил Apache)

Но когда я пытаюсь использовать PDO на своей странице php, он все равно выдает ошибку:

Что мне нужно сделать, чтобы установить PDO?

Решение

Проблема была в extension_dir Директива не работает как относительный путь. Изменение от extension_dir=»ext» в extension_dir=»c:/phpinstall_path/ext» исправил проблему.

Другие решения

В моем апаче httpd.conf У меня есть (обратите внимание, что у меня #, как выложено, потому что это заняло у меня как минимум 1 час). Так что я оставил это, чтобы показать мне, как не сделать это.

В папке выше (и видно ниже) у меня есть эти файлы:

И в той же папке, в файле php.ini, у меня есть следующий блок, связанный с pdo, с теми, которые в силе, не извлекаются с ;

; Расширение = php_pdo_firebird.dll
расширение = php_pdo_mysql.dll
; Расширение = php_pdo_oci.dll
расширение = php_pdo_odbc.dll
; Расширение = php_pdo_pgsql.dll
; Расширение = php_pdo_sqlite.dll

тогда у меня есть phpinfo_xyz.php файл только для тестирования (читай: удалите его, когда закончите), который содержит

Перезапустите Apache, укажите на это файл из браузера и обратите внимание на следующие блоки, похожие на следующие три.

На первой картинке PHP выше из phpinfo() Это был самый правильный путь в httpd.conf. Вот почему я оставил в неправильном пути попытки, увиденные в этом ответе.

Так было до Loaded Configuration File прилично появился, что у него был шанс.

Удачи. Это было не весело. Половина проблемы заключалась в том, что было 2 или 4 варианта исходной загрузки. К сожалению, я думаю, что это заняло у меня 2 или 3 часа вместе. Но я не такой умный, как все вы.

Урок — Установка PDO

↑ PHP5, PDO — PHP Data Objects
Урок — Установка PDO
← Предыдущий урок

Установка PDO на системах Unix

1. драйвер PDO и PDO_Sqlite включен, по умолчанию, в PHP 5.1.0. Вам может понадобиться выбрать другой драйвер PDO для конкретной базы данных, в этом случае обратитесь к документации по конкретной базе данных драйверов PDO.

Примечание: При построении PDO в качестве общего расширения (shared extension (не рекомендуется)), все PDO драйверы должен быть загружены после PDO самостоятельно.

2. При установке PDO как общего модуля, следует изменить файл php.ini, что бы расширение(extension) PDO загружалось автоматически, работает PHP работает.

Вам также необходимо убедиться, чтобы имелись специфичные драйверы базы данных, и чтоб они были перечислены после pdo.so, так как PDO должен инициализироваться в первую очередь, до загрузки драйверов баз данных PDO.

Если вы запустили PDO для конкретной базы данных расширений статически, вы можете пропустить этот шаг.

3. extension = pdo.so

Установка PDO на системах Windows

1. PDO и все основные драйверы PDO поставляются с PHP как общие расширения(extentions). Для активизации нужно раскомментировать необходимые строки в файле php.ini:

Примечание: Этот шаг не является необходимым для PHP 5.3 и выше, так как DLL, больше не требуется для PDO.

2. Далее необходимо указать какие драйвера подключать автоматически — опять же необходимо раскоментировать строки в php.ini файле:

Эти библиотеки должны существовать в директории «extension_dir» системы.

Проверяем работу PDO

Просмотрите подключается ли PDO с помощью функции phpinfo().

На странице вам нужно найти блок PDO, а также блоки pdo_mysql, pdo_sqlite, и т.д. в зависимости от тех PDO-драйверов которые вы подключали.

PHP: PDO быстрый старт, работа с MySQL

Содержание:

PDO (PHP Data Objects) — расширение PHP, которое реализует взаимодействие с базами данных при помощи объектов. Профит в том, что отсутствует привязка к конкретной системе управления базами данных. PDO поддерживает СУБД: MySQL, PostgreSQL, SQLite, Oracle, Microsoft SQL Server и другие.

Официальный мануал по PHP PDO здесь . Там же можно найти и сам класс PDO .

Почему стоит использовать PDO

Функции mysql в PHP для работы с БД давно уже устарели, на сегодняшний день желательно использовать mysqli или PDO (PHP Data Objects). Кроме того, mysqli — эта библиотека, которая по большому счёту, не предназначена для использования напрямую в коде. Она может послужить хорошим строительным материалом для создания библиотеки более высокого уровня. При работе с mysqli следует также помнить об обеспечении безопасности вашего приложения, в частности о защите от SQL-инъекций. В случае использования PDO (с его подготовленными запросами), такая защита идёт уже «из коробки», главное правильно применить необходимые методы.

Тестовая база данных с таблицей

Установка PDO

Проверить доступные драйвера

Соединение с базой данных

Соединения устанавливаются автоматически при создании объекта PDO от его базового класса.

При ошибке подключения PHP выдаст ошибку:

В этом примере подключения мы используем конструкцию try. catch . Многие спорят о целесообразности её использования. Лично я использую try. catch , она мне не мешает.

Подготовленные и прямые запросы

В PDO два способа выполнения запросов:

  • Прямой — состоит из одного шага;
  • Подготовленный — состоит из двух шагов.

Прямые запросы

  • query() используется для операторов, которые не вносят изменения, например SELECT . Возвращает объект PDOStatemnt , из которого с помощью методов fetch() или fetchAll извлекаются результаты запроса. Можно его сравнить с mysql resource , который возвращала mysql_query() .
  • exec() используется для операторов INSERT, DELETE, UPDATE . Возвращает число обработанных запросом строк.

Прямые запросы используются только в том случае, если в запросе отсутствуют переменные и есть уверенность, что запрос безопасен и правильно экранирован.

Подготовленные запросы

Если же в запрос передаётся хотя бы одна переменная, то этот запрос в обязательном порядке должен выполняться только через подготовленные выражения . Что это значит? Это обычный SQL запрос, в котором вместо переменной ставится специальный маркер — плейсхолдер. PDO поддерживает позиционные плейсхолдеры ( ? ), для которых важен порядок передаваемых переменных, и именованные ( :name ), для которых порядок не важен. Примеры:

Чтобы выполнить такой запрос, сначала его надо подготовить с помощью метода prepare() . Она также возвращает PDO statement , но ещё без данных. Чтобы их получить, надо исполнить этот запрос, предварительно передав в него наши переменные. Передать можно двумя способами: Чаще всего можно просто выполнить метод execute() , передав ему массив с переменными:

Как видно, в случае именованных плейсхолдеров в execute() должен передаваться массив, в котором ключи должны совпадать с именами плейсхолдеров. После этого можно извлечь результаты запроса:

Важно! Подготовленные запросы — основная причина использовать PDO, поскольку это единственный безопасный способ выполнения SQL запросов, в которых участвуют переменные.

Получение данных. Метод fetch()

Мы уже выше познакомились с методом fetch() , который служит для последовательного получения строк из БД. Этот метод является аналогом функции mysq_fetch_array() и ей подобных, но действует по-другому: вместо множества функций здесь используется одна, но ее поведение задается переданным параметром. В подробностях об этих параметрах будет написано в другой заметке, а в качестве краткой рекомендации посоветую применять fetch() в режиме FETCH_LAZY

В этом режиме не тратится лишняя память, и к тому же к колонкам можно обращаться любым из трех способов — через индекс, имя, или свойство (через -> ). Недостатком же данного режима является то, что он не работает с fetchAll()

Получение данных. Метод fetchColumn()

Также у PDO statement есть метод для получения значения единственной колонки. Очень удобно, если мы запрашиваем только одно поле — в этом случае значительно сокращается количество кода:

Получение данных. Метод fetchAll()

PDO и оператор LIKE

Работая с подготовленными запросами, следует понимать, что плейсхолдер может заменять только строку или число. Ни ключевое слово, ни идентификатор, ни часть строки или набор строк через плейсхолдер подставить нельзя. Поэтому для LIKE необходимо сначала подготовить строку поиска целиком, а потом ее подставлять в запрос:

Здесь может вознинуть проблема! Поиск может не работать, потому как из базы у вас приходят данные в неправильной кодировке. Необходимо добавить кодировку в подключение, если она там не указана!

PDO и оператор LIMIT

Важно! Когда PDO работает в режиме эмуляции, все данные, которые были переданы напрямую в execute() , форматируются как строки. То есть, эскейпятся и обрамляются кавычками. Поэтому LIMIT . превращается в LIMIT ’10’, ’10’ и очевидным образом вызывает ошибку синтаксиса и, соответственно, пустой массив данных.

Решение #1 : Отключить режим эмуляции:

Решение #2 : Биндить эти цифры через bindValue() , принудительно выставляя им тип PDO::PARAM_INT :

PDO и оператор IN

При выборке из таблицы необходимо доставать записи, соответствующие всем значениям массива.

Добавление записей

Изменение записей

Удаление записей

Использование транзакций

Важно! Транзакции в PDO работают только с таблицами InnoDB

В данной заметке мы познакомились с основными понятиями PDO, его установкой, подключением к БД и самые простые возможности выборки, изменения и удаления данных. В следующих заметках мы рассмотрим ещё несколько тем, касающихся PDO.

How do I install PDO drivers for PHP on Windows?

I installed Apache, PHP 5.6 and MySQL 5.7 on a Windows server.

In php.ini, I enabled the following:

(And restarted Apache)

But when I try to use PDO in my php page, it still throws the error:

What do I have to do to get PDO installed?

2 Answers 2

The problem was the extension_dir directive did not work as a relative path. Changing from extension_dir=»ext» to extension_dir=»c:/phpinstall_path/ext» fixed the problem.

In my apache httpd.conf I have (note I have # as remmed out because it took me 1 hour at least). So I left it to show me how not to do it.

In the above folder (and seen below) I have these files:

And in that same folder, in the php.ini file I have the following block that are pdo-related, with the ones in force not remmed out with a ;

;extension=php_pdo_firebird.dll extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll

then I have a phpinfo_xyz.php file for testing purposes only (read: delete it when you are done) that contains

Restart apache, point to that file from a browser and notice the following blocks similar to the following three.

In the first PHP picture above from phpinfo() , it was the getting the path right in httpd.conf that took the longest. That is why I left in the wrong path attempts seen in this Answer.

So it wasn’t until Loaded Configuration File showed up decent that it had a chance.

Good luck. It was not fun. Half the problem was there were like 2 or 4 options of which original download to perform. Sadly I think it took me 2 or 3 hours all together. But I am not as smart as the rest of you.

Функции модуля PDO_SQLSRV для Microsoft SQL Server

Введение

PDO_SQLSRV — это драйвер, реализующий интерфейс PHP Data Objects (PDO) для получения доступа из PHP к базам данных MS SQL Server (начиная с версии SQL Server 2005) и SQL Azure.

Установка

Модуль PDO_SQLSRV включается добавлением соответствующего файла DLL в директорию модулей вашей установленной копии PHP и соответствующей записи в файл php.ini . Загружаемая копия модуля PDO_SQLSRV включает в себя восемь файлов драйверов, четыре из них для поддержки PDO. Если вы используете потоконебезопасную сборку PHP (PHP 5.3), используйте php_pdo_sqlsrv_53_nts.dll (вы должны использовать потоконебезопасную версию, если в качестве веб-сервера у вас установлен IIS). Если же вы используете потокобезопасную сборку, то должны использовать php_pdo_sqlsrv_52_ts_vc6.dll. Аналогично, для PHP 5.4 используйте php_pdo_sqlsrv_54_nts.dll или php_pdo_sqlsrv_54_ts.dll.

Наиболее часто используемая версия драйвера доступна здесь: » Загрузка SQLSRV. Если вам нужна поддержка PHP 5.2 и/или PHP скомпилирован с использованием VC6, используйте релиз драйвера 2.0: » Загрузка SQLSRV 2.0. Исходный код драйвера размещён в » публичном репозитории.

За подробностями о системных требованиях обратитесь к разделу » Системные требования SQLSRV.

Модуль PDO_SQLSRV может использоваться с PHP только в ОС Windows. Для Linux используйте ODBC и » Microsoft’s SQL Server ODBC Driver для Linux.

Предопределённые константы

Перечисленные ниже константы определены данным драйвером и будут доступны только в случае, если PHP был собран с поддержкой этого расширения или данное расширение было подгружено динамически во время выполнения. Вдобавок, эти зависимые от драйвера константы должны быть использованы только совместно с этим драйвером. Использование атрибутов, специфичных для некоторого драйвера с другим драйвером может вызвать неожиданное поведение. Если ваш код выполняется с несколькими драйверами, то можно использовать функцию PDO::getAttribute() для получения атрибута PDO::ATTR_DRIVER_NAME для проверки драйвера.

PDO::SQLSRV_TXN_READ_UNCOMMITTED ( int ) Данная константа — допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Read Uncommitted. PDO::SQLSRV_TXN_READ_COMMITTED ( int ) Данная константа — допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Read Committed. PDO::SQLSRV_TXN_REPEATABLE_READ ( int ) Данная константа — допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Repeateable Read. PDO::SQLSRV_TXN_SNAPSHOT ( int ) Данная константа — допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Snapshot. PDO::SQLSRV_TXN_SERIALIZABLE ( int ) Данная константа — допустимое значение для ключа TransactionIsolation SQLSRV DSN. Устанавливает уровень изоляции транзакций для соединения в значение Serializable. PDO::SQLSRV_ENCODING_BINARY ( int ) Определяет, что данные отправляются/получаются в виде потока байтов к/от сервера без выполнения преобразования кодировки или другого преобразования. Константа может быть передана в функции PDOStatement::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam. PDO::SQLSRV_ENCODING_SYSTEM ( int ) Определяет, что данные отправляются/получаются к/от сервера в 8ми-битной кодировке локали Windows, установленной в системе. Все мультибайтовые символы и символы, не преобразуемые в данную кодировку, заменяются символом вопроса (?). Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam. PDO::SQLSRV_ENCODING_UTF8 ( int ) Определяет, что данные отправляются/получаются к/от сервера в кодировке UTF-8. Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam. PDO::SQLSRV_ENCODING_DEFAULT ( int ) Определяет, что данные отправляются/получаются к/от сервера согласно значению PDO::SQLSRV_ENCODING_SYSTEM, указанному при подключении. Для подключения может использоваться кодировка, указанная при подготовке выражения. Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute, PDO::prepare, PDOStatement::bindColumn и PDOStatement::bindParam. PDO::SQLSRV_ATTR_QUERY_TIMEOUT ( int ) Неотрицательное целое число, отражающее период тайм-аута в секундах. Ноль (0) — это значение по умолчанию, означающее, что время тайм-аута не учитывается. Константа может быть передана в функции PDOStatement::setAttribute, PDO::setAttribute и PDO::prepare. PDO::SQLSRV_ATTR_DIRECT_QUERY ( int ) Показывает, что запрос должен быть немедленно выполнен, без подготовки выражения. Константа может быть передана в функции PDO::setAttribute и PDO::prepare. За подробностями обратитесь к разделу документации » Немедленное выполнение выражений и выполнение подготовленных выражений.

Читайте также:  Двоичный калькулятор для windows
Оцените статью