Новые книги

Эта книга пригодится тому, кто хочет заявить миру о себе, но пока не знает, как. И даже если у вас нет особых амбиций, она убережёт от распространённых ошибок, которые мы часто совершаем, заводя дневник в публичном пространстве. Люди создают блоги не только для того, чтобы постить фотографии котиков. Они ищут общения, возможностей для самореализации, популярности и любви. Марта Кетро – блогер, которого читают более тридцати тысяч человек, – расскажет, как сделать так, чтобы вас любили в Интернете.

В этой книге:

– честные и не очень способы раскрутки и продвижения блога;

– как собрать большую аудиторию и обращаться с нею;

– как не пораниться о собственную популярность и не свихнуться в погоне за рейтингом;

– как превратить тролля в камень;

– выгодно ли быть хорошим;

– что может дать раскрученный блог своему владельцу и чего лишить;

– как украсить свою сексуальную жизнь с помощью френд-ленты и не перестараться…

…и прочие «плюсы-минусы-подводные камни» – всё, о чём стоит знать, прежде чем ввязываться.

Прочитайте и рискните! Удачи!
В основу книги легли материалы занятий, апробированные автором в стенах факультета переподготовки специалистов Санкт-Петербургского государственного политехнического университета. Рассмотрены основы работы в сети Интернет, поиск информации, работа с электронной почтой. Описано, как общаться через интернет-форумы, чаты, блоги и социальные сети («ВКонтакте», «Одноклассники»), вести телефонные разговоры через Skype, обмениваться сообщениями через Twitter и др. Даны рекомендации по использованию Интернета при решении бытовых вопросов: бронирование номера в гостинице, заказ билетов, получение госуслуг, покупка товаров и др. Уделено внимание развлечениям и самообразованию: посещение интернет-музеев и библиотек, обучение через Интернет, просмотр телевизионных передач и видеороликов «YouTube» и др. Рассмотрены вопросы безопасности при работе в сети.

Вопросы о БД

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

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