mysql

Работа с базой данных средствами PHP

Рассмотрим работу с базой данных mysql через php. Предварительно нужно подключить расширение php_mysql.dll в файле php.ini (только в старых версиях php это расширение подключено). У нас есть алгоритм работы с сервером баз данных (БД):

  • Устанавливаем соединение с сервером БД (аналог mysql.exe –u логин –p пароль[имя_БД] в мониторе).
  • Выбираем базу данных для работы (аналог USE в мониторе).
  • Посылаем запрос (при использовании SELECT — работаем с выбранными данными).
  • Закрываем соединение с БД (аналог quit в мониторе).

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

  • Подключаемся к базе данных:
$connect = mysql_connect("host","login","pass") //адрес сервера, логин, пароль к базе
mysql_close([$connect]) //закрываем соединение с БД, указатель необязателен

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

  • Выбор базы через функцию mysql_select_db:
mysql_select_db("news");

У нас будут встречаться ошибки. При этом следует разграничить ошибки php и ошибки БД. Ошибки БД не будут выводиться на экран, т.к. с точки зрения php у нас все правильно. Поэтому для отслеживания ошибок БД можно в мониторе. Или использовать функции: mysql_errno (возвращает номер ошибки) и mysql_error (возвращает описание ошибки).

  • Посылаем запрос к БД — функция mysql_query(сам запрос). Во избежание проблем с кодировкой, можно в начале послать запрос:
mysql_query("SET NAMES 'cp1251'"); //все данные из базы придут в этой кодировке

Сам запрос:

$result = mysql_query("SELECT * FROM teachers");

В результате запроса придет ответ в непонятном формате. Нам надо его перевести в массив.

  • Конвертируем результат запроса в массив. Для этого используем функцию mysql_fetch_array:
$result = mysql_query(string query) //посылаем запрос
$row = mysql_fetch_array($result[, type]) //конвертируем в массив

В результате работы кода вернется массив с удвоенными ячейками. Чтобы этого избежать, можно вторым параметром в функции mysql_fetch_array передать, какой массив мы хотим видеть: индексированный или ассоциативный:

//По умолчанию
mysql_fetch_array($result, MYSQL_BOTH)
//Индексированный массив
mysql_fetch_array($result, MYSQL_NUM)//то же самое, что и
mysql_fetch_row($result) // новая функция, можно ее использовать
//Ассоциативный массив
mysql_fetch_array($result, MYSQL_ASSOC)//то же самое, что и
mysql_fetch_assoc($result) //новая функция, можно ее использовать

Чтобы получить значение из какой-то конкретной ячейки:

mysql_result($result, int row, string field) //указываем номер записи и имя поля
mysql_num_rows($result)//считаем количество записей
mysql_num_fields($result)//считаем кол-во полей
mysql_field_name($result, int field)//узнаем имя поля

Есть еще ситуация. Мы посылаем что-то на UPDATE или на DELETE. Результат вернет нам либо true, либо false. Но мы не знаем, сколько записей изменилось (или удалилось). Для этого есть функция mysql_affected_rows. Она вернет число записей, над которыми были совершены действия.

Еще ситуация. В таблице базы данных есть поле auto_increment. Мы внесли запись, и тут же хотим использовать id этой записи в коде (например, в сессии). Для этого есть функция mysql_insert_id — возвращает id последней записи.




Добавить комментарий

Ваш e-mail не будет опубликован.