uznay-chto-hochesh.narod.ru

-сайт для интересующихся людей

Учебник - справочник по PHP.

Здесь Вы найдете что хотели

Меню сайта
Главная
Введение
Справочник языка
Возможности РНР
Функции (справочник)
Расширение РНР 4.0
F.A.Q. частые вопросы
Приложения
Алфавитный указатель
Друзья сайта
сделай сайт сам! пособие по html
изучение html и web-дизайна для новичков
Бесплатная отправка смс на все операторы
Реклама
  конвертер видео | Интернет магазин запчасти форд фьюжн.
Назад Вперёд

Глава 47. Вопросы о базах данных

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

1. Я слышал, что можно получать доступ к Microsoft SQL Server из PHP. Как?
2. Можно ли получать доступ к БД Microsoft Access?
3. Я обновил до PHP 4, а как теперь mysql будет сообщать мне "Warning!: MySQL: Unable to save result set in ..." ?
4. После установки совместной/shared поддержки MySQL, Apache передаёт ядро в дамп, как только загружается libphp4.so. Можно ли это исправить?
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>"?

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 пишет об этом:
Использование другой БД в качестве посредника - плохая идея, если можно использовать
      ODBC из PHP напрямую с вашей БД - т.е. через OpenLink-драйверы. Если вам
      не нужно использовать файлы промежуточного формата, у OpenLink имеется
      Virtuoso (машина виртуальных БД) для NT, Linux и других unix-платформ.
      Посетите наш website, где можно бесплатно это загрузить.

Опцией, которая была успешно опробована, является использование MySQL и его MyODBC-драйверов под Windows и синхронизация баз данных. Steve Lawrence пишет:

  1. Установите MySQL на вашей платформе в соответствии с инструкциями к MySQL, которые находятся на www.mysql.com. Никакого специального конфигурирования не требуется, за исключением случая, когда вы устанавливаете БД и конфигурируете бюджет пользователя - тогда вы должны поместить % в поле host или имя хоста Windows-копьютера, доступ к которому вы хотите выполнять из MySQL. Запомните имя вашего сервера, username и password.
  2. Загрузите драйвер MyODBC для Windows с сайта MySQL. Последний релиз это myodbc-2_50_19-win95.zip (для NT также имеется, как и исходный код). Установите его на вашей Windows-машине. Вы можете протестировать эту операцию с помощью прилагаемой утилиты.
  3. Создайте пользовательский или системный dsn в ODBC administrator, размещённом в control panel. Введите dsn-имя, имя вашего хоста, user name, password, port, etc для вашей БД MySQL, сконфигурированной на шаге 1.
  4. Произведите полную установку Access, это гарантирует, что у вас будут все необходимые add-ins ... как минимум, вам необходима поддержка ODBC и менеджер связанных таблиц/linked table manager.
  5. Создайте новую access-БД. В окне таблицы щёлкните правой кнопкой мыши и выберите Link Tables, либо в меню file выберите Get External Data, а затем - Link Tables. Когда появится бокс поиска файлов, выберите тип файлов: ODBC. Выберите System dsn и имя вашего dsn, созданного на шаге 3. Выберите таблицу для привязки, нажмите OK. Теперь вы можете открыть таблицу и добавлять/удалят/редактировать данные на вашем MySQL-сервере! Вы можете также создавать запросы/queries, таблицы импорта/экспорта в MySQL, создавать формы и отчёты etc.

Подсказки и замечания:

  • Вы можете создавать в Аccess таблицы и экспортировать их в MySQL, затем привязать их обратно. Это ускорит создание таблиц.

  • При создании таблиц в Аccess вы обязаны иметь определённый первичный ключ/primary key, чтобы иметь право доступа для записи в таблицы Аccess. Убедитесь, что вы создали primary key в MySQL, прежде чем выполнять привязку к Аccess.

  • Если вы изменяете таблицу в MySQL, вы должны повторно связать её с Access. Перейдите в tools>add-ins>linked table manager, найдите ваше ODBC DSN и выберите таблицу для повторного связывания. Вы можете также перемещать здесь исходник вашего dsn, просто щёлкните промпт always в переключателе new location, прежде чем нажать OK.

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.
0 указывает, что ваш запрос не выполнен по каким-то причинам. Необходимо проверить наличие ошибок после отправки запроса/query и перед попыткой использования возвращённого result identifier. Подходящий способ - сделать это кодом наподобие следующего:
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
    echo mysql_error();
    exit;
}

или

$result = mysql_query("SELECT * FROM tables_priv")
    or die("Bad query: ".mysql_error());
НазадОглавление Вперёд
Получение PHPВверх Инсталяция

Хостинг от uCoz