Руководство по PHP
Пред. |  | След.

# LXXXVII. Функции СУБД MySQL

# Введение

Расширение позволяет вам работать с СУБД MySQL. За информацией о MySQL обращайтесь к http://www.mysql.com/.

Документация MySQL находится по адресу http://dev.mysql.com/doc/.

# Требования

Чтобы работать с функциями, вы должны скомпилировать PHP с поддержкой MySQL.

# Установка

Используя директиву --with-mysql[=DIR] вы можете включить в PHP поддержку СУБД MySQL.

В PHP 4, директива --with-mysql включена по умолчанию. Чтобы отключить её, используйте директиву конфигурации --without-mysql. Кроме того, в PHP 4, при включении директивы без указания пути к папке установки MySQL, PHP будет использовать встроенную библиотеку MySQL-клиента. В Windows специальные DLL отсутствуют, клиент всегда встроен в PHP4. При использовании приложений использующих MySQL (к примеру, auth-mysql) не стоит использовать встроенную библиотеку -- укажите путь к папке установки MySQL, что будет выглядеть примерно так: --with-mysql=/path/to/mysql. Это заставит PHP использовать библиотеку, установленную MySQL, что позволит избежать любых конфликтов.

В PHP 5 поддержка MySQL больше не включена по умолчанию, кроме того в нём отсутствует встроенная библиотека-клиент. Подробнее о причине можно прочитать в FAQ.

Расширение работает с MySQL версий >= 4.1.0, но не эксплуатирует всю возможную функциональность этих версий. Для этого используйте MySQLi.

Внимание
Сбои в работе PHP могут иметь место при загрузке совместно этого расширения и расширения для работы с библиотекой GNU Recode. За дополнительной информацией обращайтесь к разделу о расширении для recode.

> Замечание: Если вам требуется поддержка кодировок (отличных от latin, установленной по умолчанию), вам придётся установить внешнюю библиотеку, скомпилированную с их поддержкой.

# Настройка во время выполнения

Поведение этих функций зависит от установок в `php.ini`.

Таблица 1. Директивы конфигурации MySQL

Имя | Значение по умолчанию | Область изменения
--- | --- | ---
mysql.allow_persistent | "On" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.connect_timeout | "0" | PHP_INI_SYSTEM

За дальнейшей информацией и значениями PHP_INI_* констант обращайтесь к ini_set().

Краткое разъяснение конфигурационных директив.

mysql.allow_persistent логическое

  Позволять ли постоянные соединения с MySQL.

mysql.max_persistent целое

  Максимальное количество постоянных соединений на один процесс.

mysql.max_links целое

  Максимальное количество соединений с MySQL на один процесс, включая постоянные соединения.

mysql.default_port строка

  TCP-порт, используемый для соединения с базой данных по умолчанию (если не был указан другой). Если эта директива опущена, порт будет взят из переменной среды MYSQL_TCP_PORT, значения mysql-tcp в `/etc/services` или константы MYSQL_PORT, указанной при компиляции, в указанном порядке. Win32 использует только константу MYSQL_PORT.

mysql.default_socket строка

  Тип сокета, используемого для соединения с локальной базой данных, если не был указан другой.

mysql.default_host строка

  Адрес сервера, используемый для соединения с базой данных, если не указан другой. Не работает в безопасном режиме.

mysql.default_user строка

  Имя пользователя, используемое для соединения с базой данных, если не указано другое. Не работает в безопасном режиме.

mysql.default_password строка

  Пароль, используемый для соединения с базой данных, если не указан другой. Не работает в безопасном режиме.

mysql.connect_timeout целое

  Время ожидания овета до разрыва соединения в секундах. Linux также использует это значение при ожидании первого ответа от сервера.

# Типы ресурсов

Модуль MySQL исползует два дополнительных типа указателей. Первый является указателем на соединение с базой данных, второй указывает на ресурс, содержащий результат запроса.

# Предопределенные константы

Перечисленные ниже константы определены данным расширением и могут быть доступны только в том случае, если PHP был собран с поддержкой этого расширения или же в том случае, если данное расширение подгружается во время выполнения.

Начиная с PHP 4.3.0 можно указать дополнительные флаги для функций mysql_connect() и mysql_pconnect() functions. Предопределены следующие константы:

Таблица 2. MySQL константы

константа | описание
--- | ---
MYSQL_CLIENT_COMPRESS | использовать протокол сжатия
MYSQL_CLIENT_IGNORE_SPACE | Позволяет вставлять пробелы после имён функций
MYSQL_CLIENT_INTERACTIVE | Ждать interactive_timeout секунд (виесто wait_timeout) бездействия, до закрытия соединения.

Функция mysql_fetch_array() использует константы для определения типа возвращаемого массива. Предопределены следующие константы:

Таблица 3. Константы выборки MySQL

константа | описание
--- | ---
MYSQL_ASSOC | Результат возвращается в ассоциативном массиве с индексами под именами колонок.
MYSQL_BOTH | Результат возвращается в массиве, содержащем как численные индексы, так и индексы под именами колонок.
MYSQL_NUM | Результат возвращается в массиве, содержащем численные индексы. Индексы стартуют с 0 (0 содержит первую колонку).

# Примеры

Этот пример показывает, как соединиться с базой данных, выполнить запрос, распечатать результат и отсоединиться.

Пример 1. Пример работы с MySQL

`<?php
/* Соединяемся, выбираем базу данных */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect : " . mysql_error());
print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");
/* Выполняем SQL-запрос */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed : " . mysql_error());
/* Выводим результаты в html */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";
/* Освобождаем память от результата */
mysql_free_result($result);
/* Закрываем соединение */
mysql_close($link);
?>`

Пред. | Начало | След.
muscat_setup | Уровень выше | mysql_affected_rows