Функции php для работы с Mysql icon

Функции php для работы с Mysql




Скачати 108.86 Kb.
НазваФункции php для работы с Mysql
Дата02.06.2013
Розмір108.86 Kb.
ТипДокументи
";
echo "";

// SQL-запрос:
$q = mysql_query ("SELECT * FROM mytable");

// Выводим таблицу:
for ($c=0; $c{
echo "
";

$f = mysql_fetch_array($q);
echo "";
echo "";

echo "";
}
echo "

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


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

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

Основной функцией для соединения с сервером MySQL является mysql_connect(), которая подключает скрипт к серверу баз данных MySQL и выполяет авторизацию пользователя базой данных. Синтаксис у данной функции такой:

mysql_connect ([string $hostname] [, string $user] [, sting $password]);

Как вы наверно заметили, все параметры данной функции являются необязательными, поскольку значения по умолчанию можно прописать в конфигурационном файле 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 [, int 2037974]) выбирает базу данных, с которой будет работать PHP скрипт. Если открыто не более одного соединения, можно не указывать параметр $id.

// Попытка установить соединение с MySQL:
if (!mysql_connect($server, $user, $ password)) {
echo "Ошибка подключения к серверу MySQL";
exit;
}
// Соединились, теперь выбираем базу данных:
mysql_select_db($db);

^ Функции обработки ошибок

Если произойдет ошибка соединения с MySQL, то вы получите соответствующее сообщение и скрипт завершит свою работу. Это не всегда бывает удобно, прежде всего, при отладке скриптов. Поэтому, в PHP есть следующие две функции:

Первая функция возвращает номер ошибки, а вторая - сообщение об ошибке. В результате мы можем использовать следующее:

echo "ERROR ".mysql_errno()." ".mysql_error()."\n";

Теперь вы будете знать, из-за чего произошла ошибка - вы увидите соответствующим образом оформленное сообщение.

^ Функции выполнения запросов к серверу баз данных

Все запросы к текущей базе данных отправляются функцией mysql_query(). Этой функции нужно передать один параметр - текст запроса. Текст запроса модет содержать пробельные символы и символы новой строки (\n). Текст должен быть составлен по правилам синтаксиса SQL. Пример запроса:

$q = mysql_query("SELECT * FROM mytable");

Приведенный запрос должен вернуть содержимое таблицы mytable. Результат запроса присваивается переменной$q. Результат - это набор данных, который после выполнения запроса нужно обработать определенным образом.

^ Функции обработки результатов запроса

Если запрос, выполненный с помощью функции mysql_query() успешно выполнился, то в результате клиент получит набор записей, который может быть обработан следующими функциями PHP:

Также можно определить количество содержащихся записей и полей в результате запроса. Функцияmysql_num_rows() позволяет узнать, сколько записей содержит результат запроса:

$q = mysql_query("SELECT * FROM mytable");
echo "В таблице mytable ".mysql_num_rows($q)." записей";

Запись состоит из полей (колонок). С помощью функции mysql_num_fields() можно узнать, сколько полей содержит каждая запись результата:

$q = mysql_query("SELECT * FROM mytable");
echo "В таблице mytable ".mysql_num_fields($q)." полей ";

У нас также есть возможность узнать значение каждого поля. Это можно сделать с помощью следующей функции:

mysql_result (int , int , mixed );

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

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

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

Вывести это в браузер можно следующим образом:

$rows = mysql_num_rows($q);
$fields = mysql_num_fields($q);

echo "
";
  for ($c=0; $c<$rows; $c++) {
     for ($cc=0; $cc<$fields; $cc++) {
     echo mysql_result($q, $c, $cc)."\t";
     echo "\n";
     }
  }
echo "
";

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

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

$q = mysql_query("SELECT * FROM mytable WHERE month=\"$db_m\" AND day=\"$db_d\");
for ($c=0; $c{
$f = mysql_fetch_row($q);
echo $f;
}

Использовать функцию 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():

$q = mysql_query("SELECT * FROM mytable WHERE month=\"$db_m\" AND day=\"$db_d\");
for ($c=0; $c{
$f = mysql_fetch_array($q);
echo "$f[email] $f[name] $f[month] $f[day]
";
}

Как видно, использовать функцию mysql_fetch_array() намного удобнее, чем mysql_fetch_row().

^ Функции получения информации о результатах SQL-запросов

PHP предоставляет еще несколько полезных функций, которые позволяют узнать информацию о результах SQL-запросов.

  • Функция mysql_field_name(int , int ) возвращает имя поля, находящегося в результате $result с номером $offset (нумерация начинается с 0). Другими словами, функция возвращает имя поля с номером $offset.

  • Функция mysql_field_type(int , int ) возвращает тип поля с номером $offset в результате $result (номер задается относительно результата, а не таблицы);

  • Функция mysql_field_flags(int , int ) возвращает пречисленные через пробел флаги (модификаторы), которые имеются у поля с номером $offset. Перечислим все поддерживаемые MySQL флаги:

Флаг

Описание

not_Null

Поле не может содержать неопределенного значения (NULL), то есть поле должно быть явно инициализировано

Primary_Key

Поле будет первичным ключом - идентификатором записи, по которому можно однозначно идентифицировать запись;

auto_increment

При вставке новой записи значение этого поля будет автоматически увеличено на единицу, потому в таблице никогда не будет двух записей с одинаковым значением этого поля;

Unique_Key

Поле должно содержать уникальное значение;

Multiple_Key

Индекс

Blob

Поле может содержать бинарный блок данных

Unsigned

Поле содержит беззнаковые числа

Zerofill

Вместо пробелов используются символы с кодом \0

Binary

Поле содержит двоичные данные

enum

Поле может содержать один элемент из нескольких возможных (элемент перечисления)

timestamp

В поле автоматически заносится текущая дата и время при его модификации

Функция mysql_field_flags() возвращает флаги в виде строки, в которой флаги разделяются пробелами.

^ Практический пример использования функций PHP-MySQL

Скрипт вывода содержимого таблицы MySQL в виде HTML:

$host = "localhost";
$user = "user";
$password = "secret_password";

// Производим попытку подключения к серверу MySQL:
if (!mysql_connect($host, $user, $password))
{
echo "

MySQL Error!

";
exit;
}

// Выбираем базу данных:
mysql_select_db($db);

// Выводим заголовок таблицы:
echo "";
echo "
EmailИмяМесяцЧислоПол
$f[email]$f[name]$f[month]$f[day]$[s]
";
?>

Листинг 11.4 содержит очередной вариант кода листингов 11.1 и 11.3. На этот раз используется функция mysql_fetch_array(), возвращающая ассоциативный массив полей.

Схожі:

Функции php для работы с Mysql iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Функции php для работы с Mysql iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Функции php для работы с Mysql iconФункции php для работы с Mysql
Основной функцией для соединения с сервером Mysql является mysql connect(), которая подключает скрипт к серверу баз данных Mysql...
Функции php для работы с Mysql iconІнформація про Mysql поля та його типи в Mysql оператори І команди Mysql функції php для роботи з Mysql бази даних: основні поняття
Телефонна книга містить інформацію про людей, що живуть в одному місті. Все це свого роду бази даних. Ну а раз це бази даних, то...
Функции php для работы с Mysql iconОб изучении понятий "области определения и нули функции"
Многие процессы и явления, которые мы знаем, описываются с помощью функции. Так как сущность понятия функции описано во многих работах...
Функции php для работы с Mysql iconІ.І. Мечникова інститут інноваційної та післядиплом
В методическом пособии рассматривается установка, настройка и тестирование web сервера Apache 2 и Интернет технологий ssi, perl,...
Функции php для работы с Mysql iconІ.І. Мечникова інститут інноваційної та післядиплом
В методическом пособии рассматривается установка, настройка и тестирование web сервера Apache 2 и Интернет технологий ssi, perl,...
Функции php для работы с Mysql iconФормат опису модуля
Мова php: основні типи змінних; арифметичні та логічні операції над змінними; функції; робота з датою та файлами; обробка html-форм;...
Функции php для работы с Mysql iconIii курс, осінній триместр 2006 – 2007 н р
Центральне місце в курсі займає програмування систем електронної комерції як розподілених клієнт-серверних застосувань; детально...
Функции php для работы с Mysql iconЛабораторная работа 5 Функции sql oracle. Дополнительные фразы предложения select содержание Цели лабораторной работы 1 Теоретические основы 1
Изучить функции sql oracle, а также фразы group by, having, order by предложения select
Додайте кнопку на своєму сайті:
Документи


База даних захищена авторським правом ©zavantag.com 2000-2013
При копіюванні матеріалу обов'язкове зазначення активного посилання відкритою для індексації.
звернутися до адміністрації
Документи