[PHP] Функции PHP для работы с MySQL

  • Автор темы impuLse #IT
  • Дата создания
  • Ответов 6
  • Просмотров 3 тыс.
  • Watchers 0

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
0
Репутация
447
Баллы
23
Уровень
0
Адрес
mySQL
Лучшие ответы
0
Рассмотрим основные функции PHP, применяемые для работы с MySQL сервером.

Функции соединения с сервером MySQL

Основной функцией для соединения с сервером MySQL является mysql_connect(), которая подключает скрипт к серверу баз данных MySQL и выполяет авторизацию пользователя базой данных. Синтаксис у данной функции такой:
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Как вы наверно заметили, все параметры данной функции являются необязательными, поскольку значения по умолчанию можно прописать в конфигурационном файле php.ini. Если вы хотите указать другие имя MySQL-хоста, пользователя и пароль, вы всегда можете это сделать. Параметр $hostname может быть указан в виде: хост:порт.

Функция возвращает идентификатор (типа int) соединения, вся дальнейщая работа осуществляется только через этот идентификатор. При следующем вызове функции mysql_connect() с теми же параметрами новое соединение не будет открыто, а функция возвратит идентификатор существующего соединения.
Для закрытия соединения предназначена функция mysql_close(int $connection_id).

Вообще, соединение можно и не закрывать - оно будет закрыто автоматически при завершении работы PHP скрипта. Если вы используете более одного соединения, при вызове mysql_close() нужно указать идентификатор соединения, которое вы хотите закрыть. Вообще не закрывать соединения - плохой стиль, лучше закрывать соединения с MySQL самостоятельно, а не надеясь на автоматизм PHP, хотя это ваше право.

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

Функция mysql_connect() устанавливает обыкновенное соединение с MySQL. Однако, PHP поддерживает постоянные соединения - для этого используйте функцию mysql_pconnect(). Аргументы этой функции такие же, как и у mysql_connect().

В чем разница между постоянным соединением и обыкновенным соединением с MySQL? Постоянное соединение не закрывается после завершения работы скрипта, даже если скрипт вызвал функцию mysql_close(). Соединение привязывается к PID потомка веб сервера Apache (от имени которого он и работает) и закрывается лишь тогда, когда удаляется процесс-владелец (например, при завершении работы или перезагрузке веб-сервера Apache).

PHP работает с постоянными соединениями примерно так: при вызове функции mysql_pconnect() PHP проверяет, было ли ранее установлено соединение. Если да, то возвращается его идентификатор, а если нет, то открывается новое соединение и возвращается идентификатор.

Постоянные соединения позволяют значительно снизить нагрузку на сервер, а также повысить скорость работы PHP скриптов, использующих базы данных.

При работе с постоянными соединениями нужно следить, чтобы максимальное число клиентов Apache не преывшало максимального числа клиентов MySQL, то есть параметр MaxClient (в конфигурационном файле Apache - httpd.conf) должен быть меньше или равен параметру max_user_connection (параметр MySQL).

Функция выбора базы данных
Функция mysql_select_db (string $db [, int $id]) выбирает базу данных, с которой будет работать PHP скрипт. Если открыто не более одного соединения, можно не указывать параметр $id.
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Функции обработки ошибок

Если произойдет ошибка соединения с MySQL, то вы получите соответствующее сообщение и скрипт завершит свою работу. Это не всегда бывает удобно, прежде всего, при отладке скриптов. Поэтому, в PHP есть следующие две функции:
  • mysql_errno(int $id);
  • mysql_error(int $id);
Первая функция возвращает номер ошибки, а вторая - сообщение об ошибке. В результате мы можем использовать следующее:
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Теперь вы будете знать, из-за чего произошла ошибка - вы увидите соответствующим образом оформленное сообщение.

Функции выполнения запросов к серверу баз данных
Все запросы к текущей базе данных отправляются функцией mysql_query(). Этой функции нужно передать один параметр - текст запроса. Текст запроса модет содержать пробельные символы и символы новой строки (\n). Текст должен быть составлен по правилам синтаксиса SQL. Пример запроса:
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Приведенный запрос должен вернуть содержимое таблицы mytable. Результат запроса присваивается переменной $q. Результат - это набор данных, который после выполнения запроса нужно обработать определенным образом.

Функции обработки результатов запроса
Если запрос, выполненный с помощью функции mysql_query() успешно выполнился, то в результате клиент получит набор записей, который может быть обработан следующими функциями PHP:
  • mysql_result() - получить необходимый элемент из набора записей;
  • mysql_fetch_array() - занести запись в массив;
  • mysql_fetch_row() - занести запись в массив;
  • mysql_fetch_assoc() - занести запись в ассоциативный массив;
  • mysql_fetch_object() - занести запись в объект.

Также можно определить количество содержащихся записей и полей в результате запроса. Функция mysql_num_rows() позволяет узнать, сколько записей содержит результат запроса:
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Запись состоит из полей (колонок). С помощью функции mysql_num_fields() можно узнать, сколько полей содержит каждая запись результата:
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
У нас также есть возможность узнать значение каждого поля. Это можно сделать с помощью следующей функции:

mysql_result (int $result, int $row, mixed $field);

Параметр функции $row задает номер записи, а параметр $field - имя или порядковый номер поля.

Предположим, SQL-запрос вернул следующий набор данных:

Email Name Last_Name
------------------------------------
ivanov@mail.ru Ivan Ivanov
petrov@mail.ru Petr Petrov

Вывести это в браузер можно следующим образом:
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Следует отметить, что функция mysql_result() универсальна: зная количество записей и количество полей, можно "обойти" весь результат, но в тоже время, скорость работы данной функции достаточно низка. Поэтому, для обработки больших наборов записей рекомендуется использовать функции mysql_fecth_row(), mysql_fecth_array(), и.т.д.

Функция mysql_fecth_row(int $res) получает сразу всю строку, соответствующую текущей записи результата $res. Каждый следующий вызов функции перемещает указатель запроса на следующую позицию (как при работе с файлами) и получает следующую запись. Если более нет записей, то функция возвращает FALSE. Пример использования данной функции:

PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Использовать функцию mysql_fecth_row() не всегда удобно, так как значения всех полей одной записи находятся все в одной строке. Удобнее использовать функцию mysql_fetch_array(), которая возвращает ассоциативный массив, ключами которого будут имена полей.

Функция mysql_fecth_array(int $res [, int $result_type]) возвращает не ассоциативный массив, а массив, заданный необязательным параметром $result_type, который может принимать следующие значения:
  • MYSQL_ASSOC - возвращает ассоциативный массив;
  • MYSQL_NUM -возвращает массив с числовыми индексами, как в функции mysql_fecth_row();
  • MYSQL_BOTH - возвращает массив с двойными индексами, то есть вы можете работать с ним, как с ассоциативным массивом и как со списком (MYSQL_BOTH - это значение по умолчанию для параметра $result_type.

В PHP есть функция, возвращающая ассоциативный массив с одним индексом:

mysql_fetch_assoc(int $res);

Фактически, данная функция является синонимом для mysql_fetch_array($res, MYSQL_ASSOC);

Пример использования функции mysql_fecth_array():
PHP:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержания кодов!
Как видно, использовать функцию mysql_fetch_array() намного удобнее, чем mysql_fetch_row().


Источник:
Пожалуйста, Войдите или Зарегистрируйтесь для просмотра содержимого URL-адресов!
 
  • Мне нравиться
Реакции: namsss и Deimos#

iAxel

Пользователь
Регистрация
20.03.2015
Сообщения
0
Репутация
1
Баллы
0
Уровень
0
Адрес
Навои
Лучшие ответы
0
Воу спасибо! Однако стоит учесть то что функции давно не используются, в данный момент используются orm dao запросы и mysqli функции.

p.s желательно новичков надо ознакомить с новыми функциями ибо в дальнейшем именно эти функции будут основными.
 

Erkin

Пользователь
Регистрация
25.03.2016
Сообщения
0
Репутация
1
Баллы
0
Уровень
0
Лучшие ответы
0
MYSQL Уже устарело, рекомендуется использовать MYSQLi или PDO
 
  • Мне нравиться
Реакции: namsss

Jeidai

Пользователь
Регистрация
28.03.2016
Сообщения
0
Репутация
0
Баллы
0
Уровень
0
Лучшие ответы
0
устарел это не то слово
 

ProgrammerPro

Пользователь
Регистрация
01.09.2017
Сообщения
0
Репутация
0
Баллы
0
Уровень
0
Лучшие ответы
0
Как сделать пагинацию?
 

LikeStyle

Пользователь
Регистрация
04.11.2016
Сообщения
0
Репутация
37
Баллы
35
Уровень
0
Награды
1
Лучшие ответы
0