Создание базы данных на основе 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 Мб (Скачать файл)

@mysql_query('CREATE DATABASE if not exists $dbname’);

or die("MySQL error: ".mysql_error());

//Код соединения с  базой данной: осуществляем однозначный  выбор только что созданной  базы или уже существующей  базы данных

//Подавляем вывод ошибок  символом @ перед вызовом функции

if(!@mysql_select_db($dbname, $dbcnx)) //Если  дескриптор равен 0, соединение  с базой данных не установлено

{

//Выводим предупреждение

echo("<p> В настоящее  время база данных не доступна, поэтому корректное отображение страницы невозможно. </p>");

exit();

}

//Небольшая вспомогательная  функция, которая выводит сообщение

//об ошибке в случае  ошибки запроса к базе данных

function puterror($message)

{

echo("<p> $message </p>");

exit();

}

?>

 

 

2. ВЫПОЛНЕНИЕ ЗАПРОСОВ К БАЗЕ ДАННЫХ

 

2.1 Создание таблицы. Функция CREATE TABLE:

 

CREATE [IF NOT EXISTS] TABLE Имя Таблицы (ИмяПоля тип, ИмяПоля тип,)

Этой командой в базе данных создается новая таблица с колонками (полями), определяемыми своими именами (ИмяПоля) и указанными типами. После создания таблицы в нее можно будет добавлять записи, состоящие из перечисленных в данной команде полей.

Листинг test_11.php. Программа, создающая новую таблицу в базе данных:

<?php ## Создание новой таблицы  в БД.

include "config.php";//Подключение к серверу и выбор базы данных

mysql_query('CREATE TABLE if not exists people

(

id INT AUTO_INCREMENT PRIMARY KEY,

name TEXT)');

or die("MySQL error: ".mysql_error());

?>

 

 

Этот сценарий создает новую  таблицу people с двумя полями. Первое поле имеет тип INT (целое) и имя id. Второе — тип TEXT (текстовая строка) и имя name.

Если таблица существует, сработает конструкция or die ().

Необязательная фраза if not exists, если она задана, говорит  серверу MySQL, что он не должен генерировать сообщение об ошибке, если таблица с указанным именем уже существует в базе данных.

Необходимо сделать  нужные изменения (изменить название базы данных на testbase) в файле config.php:

 

 

Таблица people создана:

 

 

Можно просмотреть перечень таблиц созданной базы данных c помощью оператора SHOW:

 

 

Можно отобразить информацию о столбцах всех таблиц c помощью оператора DESCRIBE:

 

 

Для просмотра данных, сохраненных в таблице, можно  применить оператор SELEKT:

 

 

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

 

 

2.2 Вставка записей в таблицу. Функция INSERT

 

INSERT INTO ИмяТаблицы(ИмяПоля1  ИмяПоля2 ...) VALUES ('зн1', 'зн2',...)

Добавляет в таблицу ИмяТаблицы запись, у которой поля, обозначенные как ИмяПоля1 ИмяПоля2 ...установлены  в значения соответственно зн№.

Те поля, которые в этой команде  не перечислены, получают "неопределенные" значения.

Неопределенное значение (NULL) — это не пустая строка, а просто признак, который говорит MySQL, что у данного поля нет никакого значения.

Впрочем, если для неуказанного здесь поля при создании таблицы был задан NOT NULL, то поле получит значение по умолчанию (чаще всего 0 или пустая строка). Значения полей можно заключать и в обычные кавычки, но апострофы тут использовать удобнее; к тому же, так положено по стандарту SQL. При вставке в таблицу бинарных данных (или текстовых, содержащих апострофы и слэши) некоторые символы должны быть "защищены" обратными слэшами, а именно символы \, ' и символ с нулевым кодом (в РНР обозначается как "\х00" или chr(0)).

Существует альтернативный синтаксис для данной команды, специфичный для MySQL:

INSERT INTO ИмяТаблицы SET ИмяПоля1='зн1', ИмяПоля2='зн2', . . .

На практике он часто оказывается  удобнее первого.

 

2.3 Удаление записей. Функция DELETE

 

DELETE FROM ИмяТаблицы WHERE выражение

Удаляет из таблицы ИмяТаблицы все  записи, для которых выполнено  выражение. Параметр выражение —  это просто логическое выражение, составленное "почти" по правилам РНР. Вот показательный пример:

DELETE FROM topics WHERE forum_id=10 AND user != "moderator"

В выражении, помимо имен полей, констант и операторов, могут  также встречаться простейшие "вычисляемые" части, например: (id < 10+11*234).

Вообще говоря, формат выражения един для всех команд запросов, которые мы встретим в дальнейшем. Например, он же используется и в операции SELECN, и в операции UPDATE.

 

2.4 Обновление записей. Функция UPDATE

 

UPDATE ИмяТаблицы SET (ИмяПоля1= 'зн1', ИмяПоля1— 'зн2', ...) WHERE выражение

В таблице ИмяТаблицы для всех записей, удовлетворяющих  выражению выражение, указанные поля устанавливаются в соответствующие значения. При этом остальные поля остаются без изменения. Эта команда часто выполняется, если не требуется обновлять сразу все поля какой-то записи, а нужно затронуть только некоторые.

2. Отправка запроса серверу для извлечения одной стоки из таблицы базы данных. Функция mysql_query

resource mysql_query (string query)

Эта функция применяется для отправки серверу SQL-запросов. Функция возвращает дескриптор запроса в случае успеха и false — в случае неудачного выполнения запроса.

В листинге показан код, с помощью  которого извлекается одна строка из таблицы customers базы данных books:

<?

include "config.php";//Подключение к серверу и выбор базы данныхх

$ath = mysql_query("select * from customers;");

if($ath)

{

$author = mysql_fetch_array($ath);

echo "<br>имя = ".$author['name']."<br>";

echo "адрес = ".$author['city']."<br>";

}

else

{

echo "<p><b>Error: ".mysql_error () . "</b></p>" ;

exit () ;

}

?>

 

 

Результат выполнения запроса для вывода одной строки из таблицы:

 

 

2.. Вывод всех строк таблицы базы данных в виде ассоциативного массива. Функция mysql_fetch_array

array mysql_fetch_array (resource result)

Эта функция возвращает значения полей в виде ассоциативного массива. В качестве аргумента принимает  дескриптор запроса, возвращаемый функцией mysql_query.

В листинге показано, как  с помощью этой функции можно  вывести все строки таблицы customers:базы данных books

<?

include "config.php";//Подключение к серверу и выбор базы данных

$ath = mysql_query("select * from customers;");

if($ath)

{

//Определяем таблицу и заголовок

echo "<table border=1>";

echo"<tr>

<td>имя</td>

<td>адрес</td>

</tr>";

//Так как запрос возвращает  несколько строк, применяем цикл

while($author = mysql_fetch_array($ath))

{

echo "<tr>

<td>".$author['name']."&nbsp;</td>

<td>".$author['city']." &nbsp </td>

</tr>";

}

echo "</table>";

}

else

{

echo "<p><b>Error: " .mysql_error () . "</b><p>";

exit () ;

}

?>

 

 

Результат выполнения запроса для вывода всех строк из таблицы:

 

 

2.. Доступ к отдельному полю записи. Функция mysql_result

mixed mysql_result (resource result, int row)

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

<?

include "config.php";//Подключение к серверу и выбор базы данных

$ath = mysql_query("select name from customers;");

if($ath)

{

echo mysql_result($ath,0,'name');

}

else

{

echo "<p><b>Error: " .mysql_error () . "</b><p>";

exit () ;

}

?>

 

 

 

2.. Возвращение поля записи в виде объекта. Функция mysql_fetch_object

object mysql_fetch_object (resource result)

Эта функция возвращает поля записи данных в виде объекта.

В листинге приведен пример, в котором  с помощью этой функции из таблицы  customers выводятся имя, и адрес авторов:

<?

include "config.php";//Подключение к  серверу и выбор базы данных

$ath = mysql_query("select * from customers;");

if($ath)

{

while($row = mysql_fetch_object($ath))

{

echo "<p>имя: ".$row->name."</p>";

echo "<p>адрес: ".$row-> city."</p>";

}

}

else

{

echo "<p><b>Error: ".mysql_error () . "</b><p>";

exit();

}

?>

 

 

Результат выполнения скрипта:

 

 

2.. Возвращение массива, в котором содержится значение поля. Функция mysql_fetch_row

array mysql_fetch_row (resource result)

В отличие от функции mysql_fetch_object, эта функция возвращает не объект, а массив, в котором содержатся значения полей:

<?

include "config.php";//Подключение к  серверу и выбор базы данных

$ath = mysql_query("select * from customers;");

if($ath)

{

while($row = mysql_fetch_row($ath))

{

echo "<p>имя: ".$row[3]."</p>";

echo "<p>адрес: ".$row[2]."</p>";

}

}

else

{

echo "<p><b>Error: " .mysql_error () . "</b><p>";

exit ();

}

?>

 

 

Результаты выполнения этого кода:

 

2.. Пример комплексного  использования информационных функций

 

Листинг info_1.php

<?php ## Получение информации  о таблице.

include "config.php";//Подключение к серверу и выбор базы данных

// Получаем все данные таблицы.

$result = mysql_query('SELECT * FROM people');

// Запрашиваем идентификатор данных  о полях таблицы.

$fields = mysql_num_fields ($result);

// Узнаем число записей в таблице.

$rows = mysql_num_rows($result);

// Получаем имя таблицы (правда, мы его и так знаем, но  все же...)

$table = mysql_field_table($result,0);

echo "Таблица '$table' содержит $fields колонок и $rows cтpoк<BR>"

echo "Таблица содержит следующие  поля:<ВR>";

// "Проходимся" по всем полям  и выводим информацию о них.

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

{

$type = mysql_field_type($result, $i);

$name = mysql_field_name($result, $i);

$len = mysql_field_len($result, $i);

$flags.= mysql_field_flags($result, $i) ;

echo "$name $type($len) $flags<BR>\n";

}

?>

 

 

 

3. MySQL И ПРОБЛЕМЫ БЕЗОПАСНОСТИ

 

Запросы, отправляемые серверу MySQL, представляют собой обыкновенные строки РНР:

mysql_query("INSERT INTO table SET name='$name'");

В $name может храниться строка, содержащая апострофы.

Рассмотрим, какой запрос придет серверу MySQL, если $name равно "cat's":

INSERT INTO table SET name='cat's'

Эта команда синтаксически некорректна  и породит ошибку во время выполнения.

Но может быть и хуже.

Рассмотрим такой запрос:

mysql_query("DELETE FROM table WHERE name='$name'");

Если параметр $name приходит из формы, и злоумышленник указал в нем следующую строку: "!' or 1=1 or '!", то после подстановки получится такой запрос к базе данных:

DELETE FROM table- WHERE name=' !' OR 1=1 OR ' !'

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