Воскресенье, 28.04.2024, 01:29
Главная
Регистрация
Вход
Софтер
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
Мои статьи [34]
Партнер
Реклама
Каталог сайтов Каталог сайтов :: Развлекательный портал iTotal.RU
Radio D-FM Club
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Главная » Статьи » Мои статьи

Работа с базами данных. Начало
Работа с базами данных. Начало.
  Для чего и как использовать базу данных. Основные функции.
  Всё, что я могу сказать в качестве рекомендации к использованию БД - это то, что жизнь без них - просто смерть! База данных - луч exe-шного света в тёмном царстве обработки данных интерпретируемой программой. База данных приносит немножко головной боли, но снимает гораздо больше.
  
  В качестве примера взят сервер баз данных MySQL (полагаю, что освоив его, вы без большого труда освоите и другие. Когда-нибудь я напишу и о них, если сам освою :).
  
  Первый разговор пойдет о функциях PHP, используемых для работы с MySQL. Итак, начнём.
  
  1. Администрирование базы данных
  Способы администрирования БД в порядке убывания удобства:
  
  phpMyAdmin (весьма рекомендую!)
  Написать скрипт, который бы передёргивал базу (см. пример)
  mysql.exe в пакете mysql
  mysql_manager.exe (там, вроде, как-то можно, только на грани шаманства)
  Особенно рекомендую первый способ. С ним не придётся изучать запросы ALTER TABLE, ADD COLUMN и т.п. Я их не знаю до сих пор. Тем более, что "такие вопросы, товарищ посол, с кондачка не решаются" - когда вам понадобится автоматически изменить структуру базы или таблицы? Пару слов о втором способе. Это так сказать обходная технология, которую я применял, не зная про phpMyAdmin и утилиту mysqldump. В скрипте пишутся команды, удаляющие базу и создающие её вновь. Когда-то помогало, но вообще это, ещё раз скажу, обходная технология, "подпорка".
  
  На будущее: если у вас будет несколько сайтов, использующих БД, то хотя бы в пределах домашнего сервера создайте несколько баз. Это облегчит работу серверу и исключит возможность путаницы таблиц. В общем, правила работы с БД те же, что и с сайтом - держать в отдельной директории от других.
  
  2. Соединение с сервером БД
  ...осуществляется при помощи функции mysql_connect: $connect = mysql_connect(<хост>, <логин>, <пароль>); По умолчанию, на mysql-сервере в таблице пользователей есть пользователь root, который может иметь доступ только с localhost-а, то бишь с того же самого компьютера, где стоит сервер mysql. ВНИМАНИЕ! "Иметь доступ с localhost-а" значит, что доступ имеет ваш скрипт PHP, а вы можете обращаться к нему с любого другого компьютера.
  
  Что происходит, когда мы вызываем функцию mysql_connect? С началом выполнения вашего скрипта, php выделяет в своей памяти место для информации о нём и его переменных. В информации о выполняемом скрипте хранится, в том числе, и информация о соединениях с базами данных. Переменная $connect - грубо говоря указатель на место, где данная информация хранится. Переменная эта точно такая же, как и остальные - если вы используете функции, то надо объявлять глобальные переменные, чтобы обратиться к ней.
  
  Почему вообще используется переменная? Это на случай, если для работы вам необходимо использовать несколько серверов баз данных (или, например, для обеспечения бОльшей безопасности вы используете разные логины, у которых могут быть разные привилегии). В таких случаях в каждом запросе нужна определённость, по какому, так сказать, каналу идёт команда. Но если вы используете только одно соединение, указывать его в параметрах функций запросов (о них - ниже) не нужно - php находит первое (и в данном случае единственное) установленное соединение и использует его.
  
  3. Запрос-выборка и обработка результатов
  Механизм работы функций запросов к БД такой же, как и у функции соединения: функции передаются параметры запроса и (если надо) соединения, а результат записывается в переменную:
  
  $result = mysql_db_query(string база данных, string запрос [, переменная соединения]);
  
  или
  $result = mysql_query(string запрос [, переменная соединения]);
  
  ВНИМАНИЕ! Чтобы использовать функцию mysql_query, в которой база данных не указывается, надо предварительно выбрать используемую базу данных:
  mysql_select_db(string база данных);
  
  Теперь у нас есть переменная $result. Это указатель на результат выполнения запроса. Там есть сколько-то строк таблицы. Получить эти строки можно через функции mysql_fetch_row и mysql_fetch_array:
  
  

  echo "<table>";

  while ($row = mysql_fetch_array($result))

    echo "<tr><td>", $row["field1"], "</td><td>", $row["field2"], "</td></tr>";

  echo "</table>";

  

  
  Функция mysql_fetch_array выдаёт в указанную переменную (в данном случае $row) массив, индексы которого - имена полей (причём, если вы в списке полей запроса пишете table.field, то индекс массива будет field). mysql_fetch_row выдаёт массив, индексы которого - числа, начиная с 0.
  
  Какой функцией лучше пользоваться? Если вы запрашиваете звёздочку, т.е. все поля таблицы, а выводить поля нужно в определённой последовательноси (когда, например, у таблицы рисуется шапка), лучше пользоваться mysql_fetch_array. Если вы запрашиваете одно-два-три поля, чётко зная их последовательность, можно делать mysql_fetch_row - это уменьшит объем кода программы.
  
  4. Запросы-действия
  Это команды DELETE и UPDATE. Подобные запросы - в "правах" такие же, как и SELECT, поэтому отправка команды серверу происходит тем же способом - mysql_query (mysql_db_query). Но в данном случае функция не возвращает результата:
  
  $result = mysql_query("SELECT * FROM sometable");
  но
  mysql_query("DELETE FROM sometable WHERE id=...");
  
  
  Соответственно, если мы выполним запрос-выборку и не запишем результат в переменную, данные не будут храниться нигде.
  
  5. Обработка ошибок запросов
  Сообщение о последней ошибке можно получить через функцию mysql_error:
  
  echo "Ошибка базы данных. MySQL пишет:", mysql_error();
  
  Если результат функции пишется в переменную, можно проверить её:
  

  $result = mysql_query($request);

  if (!$result)

    echo "Ошибка базы данных. MySQL пишет:", mysql_error();

  else {

    echo "<table>";

    while ($row = mysql_fetch_array($result))

      echo "<tr><td>", $row["field1"], "</td><td>", $row["field2"], "</td></tr>";

    echo "</table>";

    };

  

  
  Если в переменную не пишем, то так:
  
  

  $request = "UPDATE (...)";

  mysql_query($request);

  if (!mysql_error())

    echo "Обновление данных прошло успешно!";

  else echo "Ошибка базы данных. MySQL пишет:", mysql_error();

  

  
  Если запрос генерируется автоматически, можно выводить и сам запрос (полезно создавать переменную, которая бы его содержала, и использовать её в качестве параметра функции).
Категория: Мои статьи | Добавил: Morris (25.10.2009)
Просмотров: 1075 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Логин:
Пароль:
Поиск
Статьи
[10.01.2010][Мои статьи]
коды к игре Dragon Age Origins (0)
[25.10.2009][Мои статьи]
Моя первая программа на PHP (0)
[25.10.2009][Мои статьи]
MySQL как основа электронного магазина (1)
[24.10.2009][Мои статьи]
Отсылка писем с аттачами при помощи PHP Mail (0)
[17.09.2011][Мои статьи]
Продвижение сайтов, поднятие ТИЦ, PR, увеличение посещаемости сайта, увеличение трафика (0)
Навигация
  • Locations of visitors to this page
  • Рейтинг!!!
    Яндекс цитирования

    Рейтинг@Mail.ru


    | Copyright MyCorp © 2024 | Сайт управляется системой uCoz|