Создание базы данных на основе MySQL

Автор работы: Пользователь скрыл имя, 29 Декабря 2012 в 21:00, курсовая работа

Краткое описание

MySQL – это одна из самых популярных и самых распространенных СУБД (система управления базами данных) в интернете. Она не предназначена для работы с большими объемами информации, но ее применение идеально для интернет сайтов, как небольших, так и достаточно крупных.
MySQL отличается хорошей скоростью работы, надежностью, гибкостью. Работа с ней, как правило, не вызывает больших трудностей. Поддержка сервера MySQL автоматически включается в поставку PHP.

Содержание

Введение………………………………………………………………...2
1. СОЕДИНЕНИЕ РНР-СЦЕНАРИЕВ с таблицами MySQL ……….4
1.1.Соединение с сервером. Функция mysql_connect ………...4
1.2. Разрыв соединения с сервером. Функция mysql_close …..5
1.3. Создание базы данных. Функция CREATE DATABASE ..5
1.4. Выбор базы данных. Функция mysql_select_db…………..7
1.5 Обработка ошибок…………………………………………..7
1.6 Автоматизация подключения к MySQL. Файл (config.php)8
2. ВЫПОЛНЕНИЕ ЗАПРОСОВ К БАЗЕ ДАННЫХ ………………...10
2.1 Создание таблицы. Функция CREATE TABLE:…………...10
2.2 Вставка записей в таблицу. Функция INSERT…………….12
2.3 Удаление записей. Функция DELETE……………………...13
2.4 Обновление записей. Функция UPDATE…………………..13
3. MySQL И ПРОБЛЕМЫ БЕЗОПАСНОСТИ ……………………….23
3.1. Экранирование спецсимволов ……………………………..23
3.2. Шаблоны запросов и placeholders …………………………24
3.3 Пример применения СУБД MySQL………………………..29
4. Назначение и условия применения проекта……………………..34
4.1. Представление скрипта ……………………………………34
4.2. Системные требования …………………………………….34
4.3. Характеристика скрипта …………………………………..34
Заключение……………………………………………………………..35
Список использованной литературы…………………………………36
Приложение А…………………………………………………………3

Вложенные файлы: 1 файл

Курсовой проект по НТП.doc

— 1.11 Мб (Скачать файл)

○ Поле stamp типа timestamp хранит время изменения данной записи. Тип timestamp удобен тем, что значение stamp изменяется сервером MySQL автоматически при вставке  или модификации записи.

● Благодаря фразе IF NOT EXISTS MySQL создаст таблицу только при первом запуске скрипта, и ничего не будет делать при последующих запусках.

Рекомендуется всегда создавать  таблицы прямо в скриптах, которые  с ними работают, потому, что это  делает сценарии автономными. К сожалению  многие скрипты так не поступают. Обычно к ним прилагается SQL-файл с командами создания таблиц, который нужно запустить перед установкой скриптов. Этот способ не рекомендуется.

● Режим magic_quotes_gpc, устанавливаемый  в файле php.ini, заставляет РНР вставлять  слэши перед данными, пришедшими из формы. Так разработчики РНР попытались обезопасить программистов, использующих СУБД от распространенной ошибки с апострофами.

Так как мы обрабатываем апострофы самостоятельно (функция mysql_qw()), нам нужно вернуть данные в исходный вид, т. е. убрать из них все лишние слэши.

Можно подумать, что идея с magic_quotes_gpc хороша, и задаться вопросом: а зачем же вообще нужна функция mysql_qw(), если есть magic_quotes_gpc? Ответ на этот вопрос: данные, помещаемые в базу, могут прийти не только из формы, но и из других источников (a magic_quotes_gpc обрабатывает лишь данные формы).

● Выдавая заголовок Location, мы обеспечиваем так называемую самопереадресацию. Зачем она нужна? Попробуйте убрать вызов Header() (и идущий следом exit()), затем добавить в гостевую книгу запись и тут же нажать кнопку «Обновить» в браузере. Появится запрос: хотите ли вы послать данные формы повторно или нет. Если вы ответите «Да», в книгу добавится еще одна запись, идентичная первой. Если же ответите «Нет», то будет показано старое состояние гостевой книги, без только что добавленной записи. Самопереадресация обеспечивает корректность работы кнопки «Обновить», а добавляемое в query_string текущее время гарантирует, что браузер не станет кэшировать страницу.

● Интересна SQL-команда

SELECT *, UNIX_TIMESTAMP(stamp) AS stamp

Тип данных TIMESTAMP хранит информацию о времени в следующем представлении: 20051222000307. Первые 4 цифры определяют год, следующие две — месяц, и т. д. В то же время, для функции PHP date()нужен Unix timestamp-формат — число секунд, прошедших с 1 января 1970 года. Чтобы преобразовать первое представление во второе, используется функция UNIX_TIMESTAMP(), встроенная в MySQL. Суффикс " AS stamp " позволяет добавить вычисленное поле под именем stamp к остальным полям, которые были извлечены звездочкой (*).

В итоговый набор данных поле stamp должно бы было добавиться в конец списка полей, и результат должен бы получиться из 5 колонок (id, stamp, name, text и еще другая stamp, полученная при помощи " AS stamp " — не важно, что она имеет то же имя, что и вторая). Однако использование функции mysql_fetch_assoc() "гасит" первое поле stamp и заменяет его значением последнего.

Таким образом, в итоге  переменная $row равна массиву из четырех  элементов: (id, stamp, name, text), причем stamp идет в формате Unix timestamp, что и требовалось.

● При выводе данных в  браузер их в обязательном порядке  обрабатывают функцией htmlspecialchars(), чтобы злоумышленник не смог вставить в сообщение теги и "разрушить" структуру страницы. Обратите внимание, что данные хранятся в БД в исходном виде, а их обработка производится уже в самом конце, непосредственно перед выводом. Такая практика позволяет, например, легко написать скрипт редактирования записей в гостевой книге, или же изменить ее дизайн (например, добавить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Назначение и условия применения проекта

 

В моем курсовом проекте  я рассматриваю тематику базы данных. Основным назначением написанного  скрипта, состоящего из нескольких файлов является демонстрирование возможности реализации баз данных в среде web сайтов с использованием сервера базы данных MySQL , а также возможностями PHP.

 

4.1 Представление скрипта

 

С помощью этого скрипта  можно создать на своем сайт небольшую базу данных, с возможностью изменения, добавления и удаления записей. Она подойдет для небольшого сайта. Главное, чтобы была поддержка PHP версии 4 или выше. Скрипт корректно работает при error_reporting=E_ALL и register_globals=off.(Это настройки PHP.INI).

 

4.2 Системные требования

 

Скрипт разрабатывался и тестировался под Windows 7, Apache 1.3.24, PHP 4.3.0. Отлично функционирует на сервере Agava(h1, h10, h11, h12).

Для полноценной работы скрипта необходимо:

  1. Установить сервер Apache;
  2. Установить сервер MySQL;

Работу скрипта можно  посмотреть по адресу:

   (Z:\home\localhost\www\

 

4.3 Характеристика скрипта

 

  1. Возможность создания базы данных и регистрирование ее на сервере MySQL программным способом ;
  2. Возможность внесения данных в таблицы базы данных программным способом;
  3. Возможность добавления, а также удаления клиента из таблицы клиентов;
  4. Возможность добавления, а также удаления товара из таблицы товаров;
  5. Возможность добавления и изменения заказа из таблицы заказов;
  6. Возможность просмотра таблиц базы данных, а также просмотра отдельной таблицы списка клиентов чей заказ превышает 1000 тг.

 

 

 

 

 

 

 

Заключение

 

Средства эффективного хранения и выборки больших объемов  информации внесли огромный вклад в  успешное развитие Интернета. Обычно для  хранения информации используются базы данных. Работа таких известных сайтов, как Yahoo, Amazon и Ebay, в значительной степени зависит от надежности баз данных, хранящих громадные объемы информации. Конечно, поддержка баз данных ориентирована не только на интересы гигантских корпораций — в распоряжении web-программистов имеется несколько мощных реализаций баз данных, распространяемых по относительно низкой цене (а то и бесплатно).

Правильная организация  базы данных обеспечивает более быстрые  и гибкие возможности выборки  данных. Она существенно упрощает реализацию средств поиска и сортировки, а проблемы прав доступа к информации решаются при помощи средств контроля за привилегиями, присутствующими во многих системах управления базами данных (СУБД). Кроме того, упрощаются процессы репликации и архивации данных.

В моем курсовом проекте  подробно описана выборка и обновления данных в MySQL — вероятно, самой популярной СУБД, используемой в PHP ( http://www.mysql.com ). Использовался язык PHP, так как он является наилучшим средством для работы в web среде. Я научился в течении работы использовать свои знания, а также усовершенствовать их. В дальнейшем имеется возможность реализации, а также усовершенствовании скрипта.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список  использованной  литературы

 

  1. Аткинсон Л. MySQL. Библиотека профессионала.: Пер. с англ. — М.: Издательский дом "Вильяме", 2002. — 624 с.: ил. — Парал. тит. англ.
  2. Новик В. Справочник. SQL,PL/SQL,SQL*Plus.: Свободное интернет-издание (WWW.DELTACOM.CO.IL), 2001.
  3. Астахова И.Ф. SQL в примерах и задачах; Учеб. пособие / И.Ф. Астахова, А.П. Толстобров,В.М. Мельников.— Мн.: Новое знание, 2002. — 176 с.
  4. http://phpclub.ru/
  5. http://php.ru/
  6. Учебник PHP.chm
  7. Учебник по PHP 4.chm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приложение  А

Исходный листинг программы:

base.php    // скрипт соединения с сервером базы данных, создание базы данных,

<?php        //   а также создание таблиц базы данных      

 $Host = "localhost";

 $User = "root";

$Password = "";

//соединение с сервером

$link = mysql_connect($Host,  $User, $Password);

if (!$link)

    die('Нельзя соединиться  с севером: ' . mysql_error());

 

//создание базы данных my_db

$sql = 'CREATE DATABASE my_db';

if (mysql_query($sql, $link))

    echo "База данных успешно создана!!!\n";

else

    echo 'Ошибка  создания базы данных: ' . mysql_error() . "\n";

 

//выбор базы данных

mysql_select_db("my_db") or die('Ошибка выбора базы данных my_db!<br/>');

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

$sql = "CREATE TABLE Clients(C_NO INT NOT NULL AUTO_INCREMENT, C_NAME VARCHAR(30) NOT NULL, C_ADDR VARCHAR(20) NOT NULL, C_CITY VARCHAR(15) NOT NULL, C_PHONE VARCHAR(11) NOT NULL, PRIMARY KEY(C_NO));";

mysql_query($sql) or die('Ошибка создания таблицы Clients! '.mysql_error().'<br/>');

 

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

$sql = "CREATE TABLE Goods(G_NO INT NOT NULL AUTO_INCREMENT, G_DESC VARCHAR(30) NOT NULL, G_PRICE INT NOT NULL, G_QTY INT NOT NULL, PRIMARY KEY(G_NO));";

mysql_query($sql) or die('Ошибка создания таблицы Goods! '.mysql_error().'<br/>');

 

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

$sql = "CREATE TABLE Orders(O_NO INT NOT NULL AUTO_INCREMENT, O_DATE DATE NOT NULL, C_NO INT NOT NULL, G_NO INT NOT NULL, O_QTY INT NOT NULL, O_AMT INT NOT NULL, PRIMARY KEY(O_NO));";

mysql_query($sql) or die('Ошибка создания таблицы Orders! '.mysql_error().'<br/>');

 

mysql_close($link);

?>

//--------------------------------------------------------------------------------------------------

 

base_table.php:  //скрипт внесения данных в таблицы

<?php

//соединение с сервером

$Host = "localhost";

$User = "root";

$Password = "";

$link = mysql_connect($Host,  $User, $Password);

if (!$link)

    die('Нельзя соединиться  с сервером: ' . mysql_error());

 

//выбор базы данных

mysql_select_db("my_db") or die('Ошибка выбора БД my_db!<br/>');

 

//заполнение таблицы Clients

$sql[0]="INSERT INTO Clients VALUES(1, 'Джуматаев М.', 'ул. Масанчи', 'Алматы', '2606382')";

$sql[1]="INSERT INTO Clients VALUES(2,'Кокорин В.', 'ул. Держинского','Алматы','2620946')";

$sql[2]="INSERT INTO Clients VALUES(3,'Куимов А.', 'ул. Саина','Алматы','2248956')";

$sql[3]="INSERT INTO Clients VALUES(4,'Уразбаева Г.', 'мкр-н 5','Алматы','2771845')";

$sql[4]="INSERT INTO Clients VALUES(5,'Тусеев А.', 'ул. Джандосова','Алматы','2857689')";

for($i=0; $i<=4; $i++)

mysql_query($sql[$i]) or die('Ошибка записи в таблицу Clients! '.mysql_error().'<br/>');

 

//заполнение таблицы Goods

$G_sql[0]="INSERT INTO Goods VALUES(1, 'Мука', '110', '10000')";

$G_sql[1]="INSERT INTO Goods VALUES(2,'Макароны', '150', '4500')";

$G_sql[2]="INSERT INTO Goods VALUES(3,'Сахар', '200','10000')";

$G_sql[3]="INSERT INTO Goods VALUES(4,'Чай', '245', '3000')";

$G_sql[4]="INSERT INTO Goods VALUES(5,'Пшено', '120','4000')";

for($i=0; $i<=4; $i++)

mysql_query($G_sql[$i]) or die('Ошибка записи в таблицу Goods! '.mysql_error().'<br/>'); 

 

//заполнение таблицы Orders

$O_sql[0]="INSERT INTO Orders VALUES(1, '10.01.01', '1', '5', '20', '2400')";

$O_sql[1]="INSERT INTO Orders VALUES(2,'10.02.03', '2', '4', '10', '2450')";

$O_sql[2]="INSERT INTO Orders VALUES(3,'10.12.06', '3', '3', '15', '3000')";

$O_sql[3]="INSERT INTO Orders VALUES(4,'10.11.12', '4', '2', '10', '1500')";

$O_sql[4]="INSERT INTO Orders VALUES(5,'10.12.12', '5', '1', '25', '2750')";

for($i=0; $i<=4; $i++)

mysql_query($O_sql[$i]) or die('Ошибка записи в таблицу Goods! '.mysql_error().'<br/>'); 

 

mysql_close($link);

 

echo "Данные программно  записаны!!!";

?>

//-----------------------------------------------------------------------------------------------------

base_form.php: // скрипт обработки запроса просмотра данных из таблиц

<Head>

<title>Курсовой проект</title>

</Head>

<?php

$Host = "localhost";

$User = "root";

$Password = "";

//соединение с сервером

$link = mysql_connect($Host,  $User, $Password) or die('Ошибка подключения к БД!<br/>');

mysql_select_db("my_db") or die('Ошибка  выбора БД!<br/>');

?>

<body>

 

<?php

//выбираем данные из  таблицы Clients

$sql = "SELECT * FROM Clients";

$result = mysql_query($sql) or die('Ошибка  запроса! '.mysql_error().'<br/>');

echo "<h3>Клиенты</h3>";

echo "<table border=\"1\"  cellspacing=\"0\"><tr><th>Номер</th><th>ФИО</th><th>Адрес</th><th>Город</th><th>Телефон</th></tr>";

//формирование строки  из набора данных результата  запроса $sql в виде массива проиндексированного номерами и именами полей

while($mas = mysql_fetch_array($result))

{

echo "<tr>";

echo "<td>".$mas['C_NO']."</td>";

echo "<td>".$mas['C_NAME']."</td>";

echo "<td>".$mas['C_ADDR']."</td>";

echo "<td>".$mas['C_CITY']."</td>";

echo "<td>".$mas['C_PHONE']."</td>";

echo "</tr>";

}

echo "</table><br>";

 

$sql = "SELECT * FROM Goods";

$result = mysql_query($sql) or die('Ошибка  запроса! '.mysql_error().'<br/>');

echo "<h3>Товары</h3>";

echo "<table border=\"1\" cellspacing=\"0\"><tr><th>Номер</th><th>Наименование</th><th>Цена</th><th>Количестсво</th></tr>";

while($mas = mysql_fetch_array($result))

{

echo "<tr>";

echo "<td>".$mas['G_NO']."</td>";

echo "<td>".$mas['G_DESC']."</td>";

echo "<td>".$mas['G_PRICE']."</td>";

echo "<td>".$mas['G_QTY']."</td>";

echo "</tr>";

}

echo "</table><br>";

 

$sql = "SELECT * FROM Orders";

$result = mysql_query($sql) or die('Ошибка  запроса! '.mysql_error().'<br/>');

Информация о работе Создание базы данных на основе MySQL