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

LXIII. Функции MySQL

Эти функции дают доступ к серверам БД MySQL. Информацию о MySQL см. на http://www.mysql.com/

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

Требования

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

Установка

С помощью опции конфигурации --with-mysql вы включаете доступ PHP к БД MySQL. Если вы используете эту опцию без специфицирования пути к MySQL, PHP будет использовать встроенные клиентские библиотеки MySQL. В PHP4 поддержка MySQL всегда включена; Если вы не специфицируете эту опцию конфигурации, используются связанные библиотеки. Пользователи, запускающие другие приложения, которые используют MySQL (например, при запуске PHP 3 и PHP 4 как конкурирующих модулей Аpache, или auth-mysql), всегда должны специфицировать путь к MySQL: --with-mysql=/path/to/mysql. Это заставит PHP использовать клиентские библиотеки, установленные MySQL, исключая любые конфликты.

Предупреждение!

При загрузке этого расширения вместе с расширением recode могут возникать проблемы со стартом и обломом РНР. См. расширение recode.

Установка

Поведение функций MySQL определяется установками в глобальном файле конфигурации 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_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_host NULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_INI_ALL

Дополнительные детали и определение констант PHP_INI_* см. в ini_set().

Вот краткое описание директив конфигурации.

mysql.allow_persistent boolean

Разрешается ли постоянное соединение с MySQL.

mysql.max_persistent integer

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

mysql.max_links integer

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

mysql.default_port string

Номер порта по умолчанию TCP для использования при соединении с сервером БД, если иной порт не специфицирован. Если порт по умолчанию не специфицирован, значение получается из переменной окружения MYSQL_TCP_PORT, вхождения mysql-tcp в /etc/services или константы времени компиляции MYSQL_PORT, в указанном порядке. Win32 используют только константу MYSQL_PORT.

mysql.default_socket string

Имя сокета по умолчанию для использования при соединении с локальным сервером БД, если иное имя сокета не специфицировано.

mysql.default_host string

Хост сервера по умолчанию для использования при соединении с локальным сервером БД, если другой хост не специфицирован. Не примеряется в режиме safe mode.

mysql.default_user string

Имя пользователя по умолчанию для использования при соединении с сервером БД, если иное имя не специфицировано. Не применяется в режиме safe mode.

mysql.default_password string

Пароль по умолчанию для использования при соединении с сервером БД, если иной пароль не специфицирован. Не применяется в режиме safe mode.

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

Есть два типа ресурсов, используемых в MySQL-модуле. Первый это идентификатор ссылки для соединения с БД, второй - ресурс, содержащий результат выполнения запроса.

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

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

Таблица 2. Константы извлечения MySQL
константазначение
MYSQL_ASSOC Столбцы возвращаются в массиве, содержащем имя поля как индекс массива.
MYSQL_BOTHСтолбцы возвращаются в массиве, содержащем числовой индекс и имя поля как индекс массива.
MYSQL_NUMСтолбцы возвращаются в массиве, содержащем числовой индекс полей. Этот индекс начинается с 0, первого поля результата.
MYSQL_STORE_RESULT Специфицирует, что MySQL-результат должен буферизоваться.
MYSQL_USE_RESULTСпецифицирует, что MySQL-результат не должен буферизоваться.

Примеры

Данный пример показывает, как соединиться с БД, выполнить запрос/query, напечатать результирующие ряды и отсоединиться от БД MySQL.
Пример 1. Пример работы расширения MySQL
<?php
    /* Соединение, выбор БД */
    $link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die("Could not connect");
    print "Connected successfully";
    mysql_select_db("my_database") or die("Could not select database");

    /* Выполнение SQL query */
    $query = "SELECT * FROM my_table";
    $result = mysql_query($query) or die("Query failed");

    /* Печать результатов в 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";

    /* Освобождение resultset */
    mysql_free_result($result);

    /* Закрытие соединения */
    mysql_close($link);
?>

Содержание
mysql_affected_rows - получает количество рядов, задействованных в предыдущей операции MySQL
mysql_change_user - изменяет вошедшего/logged пользователя в активном соединении
mysql_character_set_name - возвращает имя набора символов/character set
mysql_close - закрывает MySQL-соединение
mysql_connect - открывает соединение с MySQL-сервером
mysql_create_db - создаёт БД MySQL
mysql_data_seek - перемещает внутренний результирующий указатель
mysql_db_name - получает результирующие данные
mysql_db_query - отправляет MySQL query
mysql_drop_db - удаляет БД MySQL
mysql_errno - возвращает числовое значение сообщения об ошибке из предыдущей MySQL-операции
mysql_error - возвращает текст сообщения об ошибке из предыдущей MySQL-операции
mysql_escape_string - мнемонизирует/Escapes строку для использования в mysql_query
mysql_fetch_array - извлекает результирующий ряд как ассоциативный массив, числовой массив или оба
mysql_fetch_assoc - извлекает результирующий ряд как ассоциативный массив
mysql_fetch_field - получает информацию столбца из результата и возвращает как объект
mysql_fetch_lengths - получает длину каждого вывода в результате
mysql_fetch_object - извлекает результирующий ряд как объект
mysql_fetch_row - получает результирующий ряд в перечислимом массиве
mysql_field_flags - получает флаги, ассоциированные со специфицированным полем в результате
mysql_field_len - возвращает длину специфицированного поля в результате
mysql_field_name - получает имя специфицированного поля в результате
mysql_field_seek - устанавливает результирующий указатель на смещение специфицированного поля
mysql_field_table - получает имя таблицы, в которой находится специфицированное поле
mysql_field_type - получает тип специфицированного поля в результате
mysql_free_result - освобождает результирующую память
mysql_get_client_info - получает информацию о клиенте MySQL
mysql_get_host_info - получает информацию о хосте MySQL
mysql_get_proto_info - получает информацию о MySQL-протоколе
mysql_get_server_info - получает информацию о MySQL-сервере
mysql_info - получает информацию о самом последнем запросе
mysql_insert_id - получает id, сгенерированный предыдущей операцией INSERT
mysql_list_dbs - список БД, доступных на MySQL-сервере
mysql_list_fields - список результирующих полей MySQL
mysql_list_processes - список процессов MySQL
mysql_list_tables - список таблиц в БД MySQL
mysql_num_fields - получает количество полей в результате
mysql_num_rows - получает количество рядов в результате
mysql_pconnect - открывает постоянное соединение с MySQL-сервером
mysql_ping - устанавливает Ping-соединение с сервером или соединяется повторно, если соединения нет
mysql_query - отправляет MySQL query
mysql_real_escape_string - мнемонизирует/Escapes специальные символы в строке для использования в SQL-операторе, учитывая текущий charset соединения
mysql_result - получает результирующие данные
mysql_select_db - выбирает БД MySQL
mysql_stat - получает текущий системный статус
mysql_tablename - получает имя таблицы поля
mysql_thread_id - возвращает id текущего потока
mysql_unbuffered_query - отправляет SQL query в MySQL без извлечения и буферизации результирующих рядов

Назад Оглавление Вперёд
msql Вверх mysql_affected_rows