Этот раздел содержит общие вопросы о связи между PHP и базами данных. Да, сегодня практически любая база данных может быть доступна из PHP.
На Windows машинах, вы просто используете поддержку ODBC и соответсвующий ODBC драйвер.
На Unix машинах для доступа к Microsoft SQL серверам вы можете использовать Sybase-CT драйвер, так как они (по крайней мере в основном) совместимы по протоколу. У Sybase есть » бесплатная версия необходимых библиотек для Linux. Для других Unix систем вам необходимо обратиться в Sybase за соответствующими библиотеками. Также смотрите ответ на следующий вопрос.
Да. Если все полностью выполняется под Windows 9x/Me или NT/2000, то у вас уже есть все необходимые средства, так как для баз данных Microsoft Access вы можете использовать ODBC и драйверы ODBC от Microsoft.
Если вы хотите связать PHP, выполняющийся на Unix, и MS Access на Windows, то вам будут нужны драйверы ODBC для Unix. Такие ODBC драйверы для Unix есть у » OpenLink Software.
Другая возможность - хранить данные на SQL сервере, который имеет ODBC драйверы для Windows, и затем обращаться к этой базе данных из Microsoft Access (используя ODBC) и из PHP (используя встроенные драйверы) или использовать промежуточный формат понятный и для Access, и для PHP, например, простые файлы или базы данных dBase. По этому поводу Тим Хэйз (Tim Hayes) из OpenLink software пишет:
Использование промежуточной базы данных - не очень хорошая идея, когда есть возможность работать с базой данных на прямую из PHP через ODBC, например с драйверами от OpenLink. Если вам все-таки надо использовать промежуточный формат, OpenLink выпустил Virtuoso (механизм виртуальной базы данных) для NT, Linux и других платформ Unix. Пожалуйста, посетите наш » вебсайт для бесплатной загрузки.
Другой проверенный вариант - использовать MySQL с её MyODBC драйверами на Windows и делать синхронизацию баз данных. Стив Лоренс (Steve Lawrence) пишет:
Полезные Советы и Трюки:
Есть три расширения для работы с MySQL, как описано в разделе Выбор MySQL API Старое API не должно использоваться, и когда-нибудь будет помечено как устаревшее и в конце концов удалено из PHP. Так как это расширение очень популярно, то этот процесс будет долгим, но настоятельно рекомендуется писать весь новый код с использованием либо mysqli либо PDO_MySQL.
Скрипты для перехода со старого API пока недоступны, но mysqli API содержит как процедурный так и объектный API, схожие со старым процедурным ext/mysql API.
Нельзя совмещать различные расширения. Поэтому, например передача mysqli соединения в PDO_MySQL или ext/mysql не будет работать.
Да. PHP всегда будет поддерживать MySQL в том или ином виде. Единственное что изменилось в PHP 5 - это то, что мы больше не поставляем саму клиентскую библиотеку. Вот некоторые причины для этого:
Сегодня клиентские библиотеки уже установлены на большинстве систем.
Учитывая предыдущий пункт, имея несколько версий, проще запутаться. Например, если вы компонуете mod_auth_mysql с одной версией, а PHP с другой, и затем разрешаете оба в Apache, то вы получите хороший жирный крах. Также, поставляемые библиотеки не всегда дружат с установленной серверной версией. Наиболее очевидный симптом этого - разногласие по тому где искать файл mysql.socket (файл Unix сокета).
Также поддержка была вялой и отставала от релизов все больше и больше.
Последующие версии библиотеки будут под GPL и мы не можем поставлять библиотеку под GPL с проектом лицензируемым по типу BSD/Apache. Поэтому полный разрыв в PHP 5 видится как самый лучший вариант.
На самом деле это заденет не так уж много людей. Пользователи Unix, по крайней мере те, кто знает что они делают, всегда были склонны собирать PHP с уже установленной на их системе библиотекой libmesqlclient, просто задав опцию --with-mysql=/usr при сборке. Пользователи Windows могут включить расширение php_mysql.dll внутри php.ini. Более подробную информацию по установке смотрите в документации MySQL. Также убедитесь, что libmysql.dll доступен в системном PATH. О том как - читайте FAQ: установка системного PATH в Windows. Так как libmysql.dll (и многие другие PHP файлы) находится в директории PHP, вам лучше добавить PHP директорию в ваш системный PATH.
Вы пытаетесь использовать идентификатор результата, который равен 0. 0 означает, что ваш запрос неудался по какой-либо причине. Вам необходимо сделать проверку на ошибки, после того как вы послали ваш запрос, и перед тем, как вы пытаетесь использовать возвращенный идентификатор результата. Правильный способ этой реализации выглядит примерно так:
<?php
$result = mysql_query("SELECT * FROM tables_priv");
if (!$result) {
echo mysql_error();
exit;
}
?>
<?php
$result = mysql_query("SELECT * FROM tables_priv")
or die("Bad query: " . mysql_error());
?>