Бази от данни (Част 1)

Интернет нямаше да е това, което е сега, ако не съществуваха базите данни. Езикът РНР нямаше да е толкова популярен и полезен, ако не беше вътрешната поддръжка на различните типове бази данни.
БД сами по себе си представляват набор от таблици, изградени от редове и колони, в които се съхранява информация.
Съществуват множество сървъри за БД или Системи за управление на БД (СУБД), които работят на различни платформи. От техническа гледна точка, СУБД е програмното обезпечение, осигуряващо интерфейс със собствена база данни. Така или иначе, термините Бази данни и СУБД се използват като синоними.
Аз ще работя с СУБД- MySQL . Системата MySQL е адаптирана към повечето платформи. Не е толкова мощна като останалите SQL-сървъри, но има забележителна скорост и достатъчно функционалност за изпълнение на повечето задачи. За сървъри с UNIX системи, MySQL (http://www.mysql.com) като правило е безплатна, което я прави най-разпространената СУБД за създаване на Web приложения.
Базите данни се създават, обновяват и преглеждат с помощта на езика SQL (език на структурираните въпроси). Командите в SQL са малко, поради което го хвалят и ругаят. Бил е замислен така, че на него да се пише все едно се пише на английски език. Използването на SQL в Web -приложения увеличава възможността от възникване на грешки (фактически се явява като още един език за програмиране), поради което щателно проверявайте работата си с базите данни.
Ще разработим обикновена база данни, където ще записваме данните, постъпващи от потребителите по канала на обратната връзка.

Свързване със сървъра


В PHP 5.5 и по-новите версии, е необходимо да ползваме новите разширения MySQLi или PDO (PHP Data Objects) за интеграция с БД.
Преди да създадем БД, е необходимо да се свържем със сървъра, на който ще я създаваме. В нашият случай това ще е MySQL сървър. След това, създадената връзка ще играе ролята на точка на достъп за последващите команди.
Свързването със сървъра се осъществява с помощта на функцията mysqli_connect ().

Синтаксис на функцията mysqli_connect ():

mysqli mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

Параметрите на функцията са:

$host- може да бъде или име на хост, или IP адрес. Ако назначим стойност NULL или стринга "localhost" на този параметър, се създава връзка към сървъра, разположен на локалния компютър.

$username- потребителско име в MySQL.

$passwd- ако не е въведена или е NULL, MySQL сървъра ще се опита да автентифицира потребителя с тези потребителски записи, които не изискват парола. Това позволява на един потребител да се дават различни позволения (в зависимост от това дали е поставена парола или не).

$dbname- определя подразбиращата се база данни, към която се прави запитването.

$port- определя номера на порта през който ще се прави опита за свързване с MySQL сървъра.

$socket- определя сокета, който ще бъде използван.

Повече информация за функцията mysqli_connect (): http://php.net/

Името на потребителя и паролата (аргументите $username и $passwd) определят правата ни за достъп до БД.
Правата за достъп до БД е по-сложен въпрос, отколкото въпроса за правата за достъп до файл. Необходимо е да разберем, че различните категории потребители имат различни права за достъп. Администраторите на СУБД могат да създават нови и да изтриват стари БД, а администратор от по-ниско ниво, може само да създава и модифицира таблици в една единствена БД. Обикновено на потребителите се дава позволение само да четат информацията от БД, но не и да я модифицират.
Ако работите на чужд сървър за БД, най-вероятно ще ви бъде създадена БД и ще ви се дадат права да управлявате само нея, не и цялата СУБД. Ако работите на свой сървър, можете да си създадете колкото искате бази данни. Толкова за правата за достъп до БД.
Аз работя с уеб базираното приложение phpMyAdmin 4.0.9 (https://en.wikipedia.org/wiki/PhpMyAdmin ), което служи за администриране на MySQL и е включено в софтуерния пакет XAMPP версия 1.8.3-5 (https://dreamlandpoly.blogspot.com/p/xampp.html), но ще вписвам данните в базата данни с помощта на PHP скрипт, който впоследствие ще кача на сървъра и стартирам в браузъра.

Затваряне на връзката с MySQL сървъра


След завършване на работата с БД, е необходимо да затворим връзката. Това се осъществява с функцията msql_close().
Синтаксисът на функцията msql_close() е:

bool mysqli_close (mysqli $link) Аргумент на функцията е:

$link- задължителен параметър. Определя коя връзка с MySQL сървъра ще се затвори.
Използването на тази функция обикновено не е необходимо, защото непостоянните връзки обикновено се затварят автоматично в края на изпълнението на скрипта. Persistent connections (постоянните връзки) са връзки, които не могат да се затворят, когато завърши изпълнението на скрипта. Функцията mysqli_close() не затваря постоянните връзки.

Заявка за създаване на БД


Когато се свържем със сървъра, е необходиво да дадем заявка за създаване на БД. Как става това? Това се осъществява с функцията mysqli_query ().
Синтаксисът на функцията mysqli_query () е:

mixed mysqli_query (mysqli $link, string $query[,int $resultmode])

Аргументите на функцията са:

$link- задължителен параметър. Идентификатор на връзката.

$query- задължителен параметър. Съдържа стринг със запитването.

$resultmode- незадължителен параметър. Ако е необходимо връщане на голямо количество данни, се вписва MYSQLI_USE_RESULT. Подразбиращата се стойност е MYSQLI_STORE_RESULT.

Заявката за създаване на нова БД има следния синтаксис:

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...

create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name

Където:

CREATE DATABASE - създава БД;

db_name - задава името на БД;

create_specification - определя характеристиките на БД, които се съхраняват във файла db.opt, намиращ се в директорията на БД.

CHARACTER SET - задава кодировката на БД;

COLLATE - задава колацията на БД.
  1. Отворете текстовия редактор и създайте нов документ.
  2. Дайте му наименование createDB.php.
  3. Създайте заглавието на страницата.
    <html>
    <head>
    <title>Създаване на БД</title>
    <meta http-equiv="Content-Type" content="text/html"; 
    charset="UTF-8">
    <head>
    <body> 
    
  4. Създаваме необходимите променливи.
  5. <?php 
    $host = "localhost"; 
    $user = "user"; 
    $password = "password"; 
    $DBName = "PolyDB"; 
    
    Присвоявайки тези стойности на променливите, впоследствие лесно ще можете да ги промените за работа с други БД. Интервали в името на БД, както и в имената на променливите и функциите, не се използват.

  6. Установяваме връзка с БД.
    $link = new mysqli($host, $user,$password) 
    or die ("Невъзможно свързване.");  
    
  7. Създаване на БД.
    $sql = "CREATE DATABASE PolyDB";
    
    if ($link->query($sql) === TRUE) {
        echo "Базата данни бе успешно създадена.";
    } else {
        echo "Грешка при създаването на базата данни:".$link->error;
    }
    
    Ако е осъществена връзка с MySQL сървъра и БД е създадена, се извежда съобщение "Базата данни бе успешно създадена.", в противен случай съобщението е "Грешка при създаването на базата данни:" и извеждане на кода на грешката.

  8. Затваряме връзката с БД.
    $link->close();
    
    ?>
    </body>
    </html> 
    
  9. Съхранете файла и го качете на Apache сървъра.
  10. Стартирайте Apache и MySQL сървърите (ако все още не сте го направили).
  11. Отворете файла createDB.php в браузъра.

Съдържанието на файла createDB.php е:
<html>
<head>
<title>Създаване на БД</title>
<meta http-equiv="Content-Type" content="text/html"; charset="UTF-8">
<head>
<body> 

<?php 
$host = "localhost"; 
$user = "user"; 
$password = "password"; 
$DBName = "PolyDB"; 

$link = new mysqli($host, $user,$password) 
or die ("Невъзможно свързване"); 

$sql = "CREATE DATABASE PolyDB";

if ($link->query($sql) === TRUE) {
    echo "Базата данни бе успешно създадена.";
} else {
    echo "Грешка при създаване на базата данни: " . $link->error;
}

$link->close();
?>

</body>
</html>
Подразбиращата се кодировка в phpMyAdmin 4.0.9 е latin1, а подразбиращата се колация- latin1_swedish_ci. Ако ви се налага да ги промените, следвайте стъпките по-долу.

Как да конфигурираме encoding (кодировката) и collate (колацията) на MySQL сървъра?

Отваряме терминала.
Вписваме командите:

cd /
find -name 'my.cnf' 2>/dev/null

Откриваме местоположението на файла.
При мен той се намира в /opt/lampp/etc/
Копираме файла в директорията /opt/lampp/var/
За да направим това, в терминала въвеждаме:

sudo cp /opt/lampp/etc/my.cnf /opt/lampp/var/

Отваряме го с текстов редактор:

sudo nano /opt/lampp/var/my.cnf

Откриваме секцията [mysqld] и въвеждаме:

character-set-server=utf8

collation-server=utf8_general_ci

Как да открием конфигурационните файлове на Apache и MySQL сървъра: http://dreamlandpoly.blogspot.com/p/gui-xampp.html

DateBase_1.png

DateBase_2.png


but.png sign.png

Няма коментари:

Публикуване на коментар