-
Урок 6.PHP и MySQL.Учимся работать с БД MySQL.
Июль 6th, 2008 50 КомментариевВведение
Проанализировав статистику переходов на сайт, я заметил что многие пользователи ищут уроки по 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
[cc lang="php"]
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться");
print ("Соединение выполнено");
mysql_close($link);
?>[/cc]- mysql_select_db - Выбирает базу данных MySQL
[cc lang="php"]
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться" );
// сделать test текущей базой данных
mysql_select_db('test', $link) or die ('Не могу выбрать БД');?>[/cc]
Функция mysql_select_db вызывается только после функции mysql_connect. Для того чтобы подключиться и выбрать базу test, мы берем второй фрагмент кода. Этот фрагмент мы будем использовать в каждом скрипте, где необходима работа с mysql.
Запись в БД
Чтобы создать запись в БД необходимо сформировать запрос, который будет вставлять значения в таблицу. Создаем новый файл в php expert editor‘е, вставляем фрагмент кода приведенный выше, который отвечает за подключение к БД и выбора нужной таблицы.
[cc lang="php"]
$link = mysql_connect("localhost", "root", "pass")
or die("Не могу подключиться" ); // сделать test текущей базой данных
mysql_select_db('test', $link) or die ('Не могу выбрать БД');[/cc]
Далее необходимо создать запрос. Это достаточно просто сделать, смотрите далее
[cc lang="php"]
$query = “INSERT INTO notebook VALUES(NULL,’Asus F5RL’,'25000′)”;[/cc]
Давайте разберем то, что мы присвоили переменной $query. Транскрипция запроса выглядит следующим образом:
$query = “INSERT(ВСТАВИТЬ) INTO (КУДА/В) ‘notebook’ VALUES()ЗНАЧЕНИЯ(Значение 1го поля,значение 2го поля,значение 3го поля)”;
Обратите внимание на первое значение в скобках после VALUES. Мы указали тип переменной NULL, это значит что в это поле ничего записываться не будет. Вот так просто мы разобрали с вами запрос, что делать дальше?!
Далее есть функция, которая отвечает за выполнение запроса, и возвращает результат. Это функция
- mysql_query - Посылает запрос MySQL
[cc lang="php"]
$result = mysql_query($query);
if($result) {echo “Даные внесены в базу данных”;} else {echo “Ошибка, данные не были внесены в БД”;}
mysql_close($link);
?>[/cc]
В нашем случае переменная $result будет содержать результат данного запроса. В конце мы добавим простое условие, которое укажет нам об успешном или неуспешном выполнении запроса.
Итог можете посмотреть при помощи PhpMyAdmin, перейдя в таблицу notebook и нажав вкладку ОбзорЧтение БД
Чтобы извлечь данные из базы, нам необходимо составить другой запрос, но прежде чем это сделать запишите в вашу таблицу несколько разных значений, пусть это будут разные модели ноутбуков с разными ценниками.
Для начала сделаем выборку всех ноутбуков с ценниками и выведем их в браузер. Для этого составляем следующий запрос:
[cc lang="php"]
$query = “SELECT * FROM notebook”;[/cc]
Здесь все достаточно просто:$query = “SELECT(ВЫБРАТЬ) *(ЗВЕЗДОЧКА ОЗНАЧАЕТ ВЫБРАТЬ ВСЁ) FROM(ОТКУДА) notebook”;
Т.е. выбираем все столбцы из таблицы ноутбук. Далее осуществляем запрос:
[cc lang="php"]
$result=mysql_query($query);while($r=mysql_fetch_array($result)) {
echo “$r[model] – $r[price]
“;}
mysql_close($link);
?>
[/cc]
Используем функцию mysql_fetch_array чтобы получить массив значений, ключами которого являются имена столбцов (model и price).При обращении к файлу мы должны получить следующую картину:Давайте теперь добавим условие, например вывести ноутбуки, цена которых превышает 30 000. Сделать это можно двумя способами. Можно просто внутри цикла while вставить условие
[cc lang="php"]
if($r[price] >=30000) {echo “$r[model] – $r[price]“;}[/cc]
Такое условие будет обрабатывать уже полученные данные из базы, но можно пойти другим путем – создать условие при запросе к базе.Предыдущий фрагмент кода остается без изменений, меняется лишь только запрос:
[cc lang="php"]
$query = “SELECT * FROM notebook WHERE price>30000″;[/cc]
Транскрипция к запросу$query = “ВЫБРАТЬ ВСЁ ИЗ notebook ГДЕ price>30000″;
[cc lang="php"]
$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);
?>
[/cc]Результатом выполнения этого скрипта будет вывод 2х позиций товаров, с ценой более 30 000.
Получение количества рядов можно сделать при использовании функции mysql_num_rows.
- mysql_num_rows – Возвращает количество рядов результата запроса
Добавим её в наш скрипт и получим к общему списку товаров их количество:
[cc lang="php"]
$query = “SELECT * FROM notebook “;$result=mysql_query($query);
while($r=mysql_fetch_array($result)) {
echo “$r[model] – $r[price]
“;}
echo “_____________
Всего позиций:”.mysql_num_rows($result);
mysql_close($link);
?>
[/cc]Изменение данных
Давайте представим, что у нас переоценка товара, и ноутбук Sony подешевел на 2 000. Чтобы нам изменить данные в таблице необходимо составить следующий запрос:
[cc lang="php"]
$query = “UPDATE notebook SET price=52000 WHERE id=3″;[/cc]
Сделаю транскрипцию запроса:$query = “ИЗМЕНИТЬ notebook УСТАНОВИТЬ price=52000 ГДЕ id=3″;
Заметьте, что в этом запросе мы отталкивались от идентификатора товара:
[cc lang="php"]
$result = mysql_query($query);if($result) {echo “Данные изменены”;} else {echo “Ошибка, данные не были изменены”;}
mysql_close($link);
?>
[/cc]В итоге ценник у ноутбука Sony станет 52 000.
Ссылки
Заключение
Этими примерами мы разобрали элементарные функции для работы с БД MySQL. В ходе тестирования можете поэкспериментировать со значениями . Для закрпеления материала советую освоить материал по созданию формы отзывов на сайте, Урок 5. Комментарии на сайте. Пишем гостевую книгу на PHP.
Подпишись на RSS, впереди много интересного.50 Responses to “Урок 6.PHP и MySQL.Учимся работать с БД MySQL.”
Страницы: [5] 4 3 2 1 » Show All
Страницы: [5] 4 3 2 1 » Show All
Leave a Reply













Ноябрь 18th, 2009 at 20:32
Я тут, как скрипткидис озаботился подобной праблеммой…
кста, если будет интерсен имеено подобный пример+HTML формы то можно посмотреть здесь http://www.htmlweb.ru/php/mysql.php
Октябрь 20th, 2009 at 01:25
Подскажите пожалуйста! Александр!
Непойму вот это отрывок
“Чтобы создать запись в БД необходимо сформировать запрос, который будет вставлять значения в таблицу. Создаем новый файл в php expert editor‘е, вставляем фрагмент кода приведенный выше, который отвечает за подключение к БД и выбора нужной таблицы”.
Создаем новый файл и в нем прописываем коды к подключению и выбора нужной таблице?
Так получаеться.
А как этот файл обозвать и где он должен размещаться? Подскажите пожалуйста!
Октябрь 18th, 2009 at 22:41
Да, такой блог стопудово надо раскручивать сильнее – что б как можно больше жителей интернета о нем узнали!
Сентябрь 30th, 2009 at 21:20
я и забыл, что нужно закрывать соединение
а то у меня потом начинал тормозить MySql Server после дня работы сайта
Август 8th, 2009 at 13:59
Использую код:
Выдает Соединение выполненоБаза данных выбраннаОшибка, данные не были внесены в БД
Что сделал не так?
Июнь 25th, 2009 at 14:00
Зравствуйте Александр! У меня возникла проблема: когда в браузере открываешь страниццу http://127.0.0.1/phpmyadmin/ у меня вылазит следующее: “phpMyAdmin не смог установить соединение с сервером MySQL. Проверьте хост, имя пользователя и пароль установленные в конфигурационном файле config.inc.php и удостоверьтесь, что они соответствуют данным полученным от администратора сервера MySQL.” Что с этим делать? Зарание спасибо.
Июнь 16th, 2009 at 20:05
Всё, разобрался.
Спасибо за этот урок!
Июнь 16th, 2009 at 18:48
У меня стоит денвер, при попытке подключится к БД пишет:
Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘root’@'localhost’ (using password: YES) in Z:\home\localhost\www\test.php on line 12
подскажите, в чём проблема?
Июнь 6th, 2009 at 16:49
Спасибо! Сразу нашел то, что искал, а то никак не мог норммально подключиться к базе.
Май 28th, 2009 at 13:41
При создании таблицы выдаёт:
“#1067 – Invalid default value for ‘id’”
что делать?