| ||||||||||
Глава 47. Вопросы о базах данныхВ этом разделе рассматриваются общие вопросы взаимодействия PHP и БД. Да, PHP может получать доступ фактически к любой БД, известной на данный момент.
1. Я слышал, что можно получать доступ к Microsoft SQL Server из PHP. Как? На машинах с Windows вы можете просто использовать имеющуюся поддержку ODBC и корректный ODBC-драйвер. На машинах Unix вы можете использовать драйвер Sybase-CT для доступа к Microsoft SQL-серверам, поскольку они протокольно совместимы (во всяком случае - большей частью). Sybase создал свободную версию необходимых библиотек для систем Linux. Для других ОС Unix вы должны запросить у Sybase корректные библиотеки. См. также ответ на следующий вопрос. 2. Можно ли получать доступ к БД Microsoft Access? Да. У вас уже имеются все необходимые утилиты, если вы работаете под Windows 9x/Me или NT/2000, где можно использовать ODBC и Microsoft ODBC драйверы для БД Microsoft Access. Если вы запускаете PHP в Unix-боксе и хотите сообщить MS Access в Windows-боксе, вам понадобятся ODBC-драйверы для Unix. OpenLink Software имеет ODBC-драйверы для Unix, которые делают эту работу. Имеется свободная пилотная программа, где вы можете загрузить пробную копию, которая не имеет срока годности, а цены начинаются от $675 для коммерческой поддерживаемой версии. Другой вариант - использовать SQL-сервер, имеющий Windows ODBC-драйверы, для хранения данных, к которым вы можете получить затем доступ из Microsoft Access (используя ODBC) и из PHP (с помощью встроенных драйверов), или можно использовать промежуточный формат, который понимается и Access, и PHP, такой как flat-файлы или БД dBase. Tim Hayes из OpenLink software пишет об этом:
Опцией, которая была успешно опробована, является использование MySQL и его MyODBC-драйверов под Windows и синхронизация баз данных. Steve Lawrence пишет:
Подсказки и замечания:
3. Я обновил до PHP 4, а как теперь mysql будет сообщать мне "Warning!: MySQL: Unable to save result set in ..." ? Вероятнее всего PHP 4 был скомпилирован с опцией '--with-mysql' без специфицирования пути к MySQL. Это означает, что PHP использует свою встроенную клиентскую библиотеку MySQL. Если в вашей системе работают приложения, такие как PHP 3, конкурирующий Apache-модуль или auth-mysql, которые используют другие версии MySQL-клиентов, тогда налицо конфликт между разными версиями этих клиентов. Рекомпиляция PHP 4 и добавление пути к MySQL '--with-mysql=/your/path/to/mysql' обычно решает эту проблему. 4. После установки совместной/shared поддержки MySQL, Apache передаёт ядро в дамп, как только загружается libphp4.so. Можно ли это исправить? Это может произойти, если ваши MySQL libs подключены относительно pthreads. Проверьте использование ldd. Если это так, скачайте MySQL tar и скомпилируйте из исходника, либо рекомпилируйте из rpm и удалите в spec-файле переключатель, который включает поточный клиентский код. Одно их этих должно помочь. Затем рекомпилируйте PHP с новыми MySQL libs. 5. Почему я получаю ошибку, которая выглядит примерно так: "Warning!: 0 is not a MySQL result index in <file> on line <x>" или "Warning!: Supplied argument is not a valid MySQL result resource in <file> on line <x>"? Вы пытаетесь использовать result-идентификатор 0.
или
| ||||||||||
|