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_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
Дополнительные детали и определение констант 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 без извлечения и буферизации результирующих рядов