программирование на PHP
Bullet (black) Email иконка RSS иконка
  • Урок 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

    Заключение

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

    Google Bookmarks БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong
    rss-лентаПодпишись на RSS, впереди много интересного.

    50 Responses to “Урок 6.PHP и MySQL.Учимся работать с БД MySQL.”

    Страницы: [5] 4 3 2 1 » Show All

    1. 50
      v01d.cmdNo Gravatar Says:

      Я тут, как скрипткидис озаботился подобной праблеммой…
      кста, если будет интерсен имеено подобный пример+HTML формы то можно посмотреть здесь http://www.htmlweb.ru/php/mysql.php

    2. 49
      АлександрNo Gravatar Says:

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

      Создаем новый файл и в нем прописываем коды к подключению и выбора нужной таблице?
      Так получаеться.
      А как этот файл обозвать и где он должен размещаться? Подскажите пожалуйста!

    3. 48
      АлександрNo Gravatar Says:

      Да, такой блог стопудово надо раскручивать сильнее – что б как можно больше жителей интернета о нем узнали! :)

    4. 47
      EugeneNo Gravatar Says:

      я и забыл, что нужно закрывать соединение :)
      а то у меня потом начинал тормозить MySql Server после дня работы сайта

    5. 46
      ИванNo Gravatar Says:

      Использую код:

      Выдает Соединение выполненоБаза данных выбраннаОшибка, данные не были внесены в БД
      Что сделал не так?

    6. 45
      SeeDNo Gravatar Says:

      Зравствуйте Александр! У меня возникла проблема: когда в браузере открываешь страниццу http://127.0.0.1/phpmyadmin/ у меня вылазит следующее: “phpMyAdmin не смог установить соединение с сервером MySQL. Проверьте хост, имя пользователя и пароль установленные в конфигурационном файле config.inc.php и удостоверьтесь, что они соответствуют данным полученным от администратора сервера MySQL.” Что с этим делать? Зарание спасибо.

    7. 44
      MageNo Gravatar Says:

      Всё, разобрался.
      Спасибо за этот урок!

    8. 43
      MageNo Gravatar Says:

      У меня стоит денвер, при попытке подключится к БД пишет:
      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

      подскажите, в чём проблема?

    9. 42
      WinxNo Gravatar Says:

      Спасибо! Сразу нашел то, что искал, а то никак не мог норммально подключиться к базе.

    10. 41
      CrazyGamerNo Gravatar Says:

      При создании таблицы выдаёт:
      “#1067 – Invalid default value for ‘id’”
      что делать?

    Страницы: [5] 4 3 2 1 » Show All

    Leave a Reply


freshcoder.ru © 2008 • При использовании материалов активная ссылка на сайт обязательна.
SEO Powered by Platinum SEO from Techblissonline