П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 176927 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74069 раз(а).

Учебник HTML.
Просмотров 73281 раз(а).

Руководство по PHP5.
Просмотров 44160 раз(а).

Хостинг через призму DNS.
Просмотров 50818 раз(а).

Подборка текстов стандартных документов.
Просмотров 44335 раз(а).

Учебник PHP - Самоучитель
Просмотров 50587 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 50999 раз(а).

Внешние атаки...
Просмотров 41309 раз(а).

Учебник PHP.
Просмотров 36543 раз(а).

SSI в примерах.
Просмотров 27427 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь




Учебник РНР
Назад Вперёд

Глава 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Вверх Инсталяция


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru