• Страница 1 из 1
  • 1
Архив - только для чтения
Модератор форума: andycrowz  
Урок PHP и MySQL.Учимся работать с БД MySQL.
Siimka
Сержант
Введение

Проанализировав статистику переходов на сайт, я заметил что многие пользователи ищут уроки по MySQL. Поэтому я решил помочь, и открываю новую рубрику на сайте, её название будет MySQL. Хочу сказать вам что переход на БД в программировании открывает новые горизонты. В свое время я полностью изучил работу с файлами и знал все функции вдоль и поперек. Со временем для хранения информации, файлов становиться недостаточно, и зачастую решение какой либо задачи, выливается в танцы с бубном, громоздкий код и конечно потраченное время. В скором времени я опубликую достаточно большую статью по работе с файлами, а сейчас мы сделаем небольшой прыжок вперед и приступим к изучению элементарных функции для работы с MySQL.

Создание БД MySQL

Чтобы создать новую базу данных, нам необходим PhpMyAdmin. Если вы будете тестировать скрипты на локальном сервере, то создание БД не вызовет каких либо проблем. Набрав в адресной строке http://127.0.0.1/phpmyadmin, вы попадает в главное меню управления базами.

Указываете имя базы данных на латинице, в качестве «Сравнения» указываете utf8_unicode_ci и нажимаем кнопку создать. После перезагрузки страницы мы попадаем в нашу базу данных. В скобках указано количество таблиц в базе.

Создание таблиц

На предыдущем скриншоте мы видим главное меню, в котором мы можем создать таблицу внутри базы данных. Для чего нужна таблица и что это такое? Таблица состоит из полей, вспомните например Microsoft Excel , там все рабочее поле разбито на ячейки. Например вы создаете таблицу, в которой создаете прайс техники

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

Как вы видите у каждого столбца есть свое описание (id, model, price), они играют очень важную роль. В своих запросах мы будем выбирать нужные данные, удовлетворяющие каким либо условиям.

Повторите мой вариант. Создайте таблицу с именем notebook, введите количество полей 3 и нажмите ОК. После нажатия кнопки, вы попадаете в следующее меню, где необходимо задать имя полей таблицы и выбрать тип данных, которые будут в них содержаться.

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

Первое поле у нас будет носить имя столбца, в качестве первого будет id – идентификатор товара. Он необходим для совершения каких либо действий с этим товаром (редактирование или удаление). Далее указываем Тип. Т.к. идентификатор будет числовой, то тип данных принимает значение INT или INTEGER (ЦЕЛОЕ ЧИСЛО). Далее вводим Длина/значение, указываем 5 (5 это не значит что максимальное количество будет 5, а то что значение будет не более 99999, я думаю этого хватит для начала). Далее идет поле сравнение, в нем необходимо указать в какой кодировке будут храниться данные. Для поля id мы оставляем значение по умолчанию. Атрибуты пропускаем. Далее переходим к полю По умолчанию и ставим значение единицу, это будет означать что первый товар будет начинаться с единицы. Переходим к Дополнительно и выставляем атрибут auto_increment. Это позволяет при добавлении новой записи, автоматически присваивать идентификатор товару, причем не случайным образом, а в порядке возрастания.

Переходим к заполнению поля model. Тип мы выставим VARCHAR. VARCHAR (ПЕРЕМЕННОЕ ЧИСЛО СИМВОЛОВ), этот тип является текстовой строкой и может иметь любую длину до определённого реализацией максимума (обычно 254 символа). Для описания модели нам хватит длины строки в 200 символов, которые мы указываем в поле длина.

Далее переходим к полю price. Здесь тип переменных будет выражен числами, поэтому тип данных устанавливаем INT, и длину значения 5.

Ниже выставляем Тип таблиц – MyISAM, сравнение – utf8_unicode_ci и нажимаем кнопку сохранить. Если все значения были введены правильно то появиться окно, с выполненым запросом, структура таблицы и в левом меню вы увидите вашу новую таблицу notebook.

На этом этап создания таблицы завершен, переходим к программированию.

Подключение к БД MySQL

Чтобы выполнять запросы к базе нам необходимо к ней подключиться и выбрать таблицу . Это достаточно просто и выполняется при помощи 2 стандартных функций.
mysql_connect - Открывает соединение с сервером MySQL

Code
<?php
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться");
print ("Соединение выполнено");
mysql_close($link);
?>

mysql_select_db - Выбирает базу данных MySQL

Code
<?php
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться" );
// сделать test текущей базой данных
mysql_select_db('test', $link) or die ('Не могу выбрать БД');

?>

Функция mysql_select_db вызывается только после функции mysql_connect. Для того чтобы подключиться и выбрать базу test, мы берем второй фрагмент кода. Этот фрагмент мы будем использовать в каждом скрипте, где необходима работа с mysql.

Запись в БД

Чтобы создать запись в БД необходимо сформировать запрос, который будет вставлять значения в таблицу. Создаем новый файл в php expert editor‘е, вставляем фрагмент кода приведенный выше, который отвечает за подключение к БД и выбора нужной таблицы.

Code
<?php
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться" ); // сделать test текущей базой данных
mysql_select_db('test', $link) or die ('Не могу выбрать БД');

Далее необходимо создать запрос. Это достаточно просто сделать, смотрите далее

Code
$query = "INSERT INTO notebook VALUES(NULL,'Asus F5RL','25000')";

Давайте разберем то, что мы присвоили переменной $query. Транскрипция запроса выглядит следующим образом:

$query = «INSERT(ВСТАВИТЬ) INTO (КУДА/В) ‘notebook’ VALUES()ЗНАЧЕНИЯ(Значение 1го поля,значение 2го поля,значение 3го поля)»;

Обратите внимание на первое значение в скобках после VALUES. Мы указали тип переменной NULL, это значит что в это поле ничего записываться не будет. Вот так просто мы разобрали с вами запрос, что делать дальше?!

Далее есть функция, которая отвечает за выполнение запроса, и возвращает результат. Это функция
mysql_query - Посылает запрос MySQL

Code
$result = mysql_query($query);

if($result) {echo "Даные внесены в базу данных";} else {echo "Ошибка, данные не были внесены в БД";}

mysql_close($link);

?>

В нашем случае переменная $result будет содержать результат данного запроса. В конце мы добавим простое условие, которое укажет нам об успешном или неуспешном выполнении запроса.
Итог можете посмотреть при помощи PhpMyAdmin, перейдя в таблицу notebook и нажав вкладку Обзор

Чтение БД

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

Для начала сделаем выборку всех ноутбуков с ценниками и выведем их в браузер. Для этого составляем следующий запрос:

Code
$query = "SELECT * FROM notebook";

десь все достаточно просто:

Code
$query = «SELECT(ВЫБРАТЬ) *(ЗВЕЗДОЧКА ОЗНАЧАЕТ ВЫБРАТЬ ВСЁ) FROM(ОТКУДА) notebook»;

Т.е. выбираем все столбцы из таблицы ноутбук. Далее осуществляем запрос:

Code
$result=mysql_query($query);

while($r=mysql_fetch_array($result)) {

echo "$r[model] - $r[price]<br/>";

}
mysql_close($link);
?>

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

Давайте теперь добавим условие, например вывести ноутбуки, цена которых превышает 30 000. Сделать это можно двумя способами. Можно просто внутри цикла while вставить условие

Code
if($r[price] >=30000) {echo "$r[model] - $r[price]";}

Такое условие будет обрабатывать уже полученные данные из базы, но можно пойти другим путем – создать условие при запросе к базе.

Предыдущий фрагмент кода остается без изменений, меняется лишь только запрос:

Code
$query = "SELECT * FROM notebook WHERE price>30000";

Транскрипция к запросу

Code
$query = «ВЫБРАТЬ ВСЁ ИЗ notebook ГДЕ price>30000″;

Code
$query = "SELECT * FROM notebook WHERE price>30000";

$result=mysql_query($query);

while($r=mysql_fetch_array($result)) {

echo "$r[model] - $r[price]";

}
mysql_close($link);
?>

Результатом выполнения этого скрипта будет вывод 2х позиций товаров, с ценой более 30 000.

Получение количества рядов можно сделать при использовании функции mysql_num_rows.
mysql_num_rows – Возвращает количество рядов результата запроса

Добавим её в наш скрипт и получим к общему списку товаров их количество:

Code
$query = "SELECT * FROM notebook ";

$result=mysql_query($query);

while($r=mysql_fetch_array($result)) {

echo "$r[model] - $r[price]<br/>";

}

echo "_____________<br/>
Всего позиций:".mysql_num_rows($result);
mysql_close($link);
?>

Изменение данных

Давайте представим, что у нас переоценка товара, и ноутбук Sony подешевел на 2 000. Чтобы нам изменить данные в таблице необходимо составить следующий запрос:

Code
$query = "UPDATE notebook SET price=52000 WHERE id=3";

Сделаю транскрипцию запроса:

Code
$query = «ИЗМЕНИТЬ notebook УСТАНОВИТЬ price=52000 ГДЕ id=3″;

Заметьте, что в этом запросе мы отталкивались от идентификатора товара:

Code
$result = mysql_query($query);

if($result) {echo "Данные изменены";} else {echo "Ошибка, данные не были изменены";}

mysql_close($link);

?>
Сообщение # 1 написано 17.11.2010 в 16:37
  • Страница 1 из 1
  • 1
Поиск: