Интернет нямаше да е това, което е сега, ако не съществуваха базите данни. Езикът РНР нямаше да е толкова популярен и полезен, ако не беше вътрешната поддръжка на различните типове бази данни.
БД сами по себе си представляват набор от таблици, изградени от редове и колони, в които се съхранява информация.
Съществуват множество сървъри за БД или Системи за управление на БД (СУБД), които работят на различни платформи. От техническа гледна точка, СУБД е програмното обезпечение, осигуряващо интерфейс със собствена база данни. Така или иначе, термините Бази данни и СУБД се използват като синоними.
Аз ще работя с СУБД- MySQL . Системата MySQL е адаптирана към повечето платформи. Не е толкова мощна като останалите SQL-сървъри, но има забележителна скорост и достатъчно функционалност за изпълнение на повечето задачи. За сървъри с UNIX системи, MySQL (http://www.mysql.com) като правило е безплатна, което я прави най-разпространената СУБД за създаване на Web приложения.
Базите данни се създават, обновяват и преглеждат с помощта на езика SQL (език на структурираните въпроси). Командите в SQL са малко, поради което го хвалят и ругаят. Бил е замислен така, че на него да се пише все едно се пише на английски език. Използването на SQL в Web -приложения увеличава възможността от възникване на грешки (фактически се явява като още един език за програмиране), поради което щателно проверявайте работата си с базите данни.
Ще разработим обикновена база данни, където ще записваме данните, постъпващи от потребителите по канала на обратната връзка.
БД сами по себе си представляват набор от таблици, изградени от редове и колони, в които се съхранява информация.
Съществуват множество сървъри за БД или Системи за управление на БД (СУБД), които работят на различни платформи. От техническа гледна точка, СУБД е програмното обезпечение, осигуряващо интерфейс със собствена база данни. Така или иначе, термините Бази данни и СУБД се използват като синоними.
Аз ще работя с СУБД- 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 ().
Преди да създадем БД, е необходимо да се свържем със сървъра, на който ще я създаваме. В нашият случай това ще е 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/
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 скрипт, който впоследствие ще кача на сървъра и стартирам в браузъра.
Правата за достъп до БД е по-сложен въпрос, отколкото въпроса за правата за достъп до файл. Необходимо е да разберем, че различните категории потребители имат различни права за достъп. Администраторите на СУБД могат да създават нови и да изтриват стари БД, а администратор от по-ниско ниво, може само да създава и модифицира таблици в една единствена БД. Обикновено на потребителите се дава позволение само да четат информацията от БД, но не и да я модифицират.
Ако работите на чужд сървър за БД, най-вероятно ще ви бъде създадена БД и ще ви се дадат права да управлявате само нея, не и цялата СУБД. Ако работите на свой сървър, можете да си създадете колкото искате бази данни. Толкова за правата за достъп до БД.
Аз работя с уеб базираното приложение 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 сървъра ще се затвори.
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.
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 - задава колацията на БД.
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 - задава колацията на БД.
- Отворете текстовия редактор и създайте нов документ.
- Дайте му наименование createDB.php.
- Създайте заглавието на страницата.
<html> <head> <title>Създаване на БД</title> <meta http-equiv="Content-Type" content="text/html"; charset="UTF-8"> <head> <body>
- Създаваме необходимите променливи.
- Установяваме връзка с БД.
$link = new mysqli($host, $user,$password) or die ("Невъзможно свързване.");
- Създаване на БД.
$sql = "CREATE DATABASE PolyDB"; if ($link->query($sql) === TRUE) { echo "Базата данни бе успешно създадена."; } else { echo "Грешка при създаването на базата данни:".$link->error; }
Ако е осъществена връзка с MySQL сървъра и БД е създадена, се извежда съобщение "Базата данни бе успешно създадена.", в противен случай съобщението е "Грешка при създаването на базата данни:" и извеждане на кода на грешката. - Затваряме връзката с БД.
$link->close(); ?> </body> </html>
- Съхранете файла и го качете на Apache сървъра.
- Стартирайте Apache и MySQL сървърите (ако все още не сте го направили).
- Отворете файла createDB.php в браузъра.
<?php $host = "localhost"; $user = "user"; $password = "password"; $DBName = "PolyDB";Присвоявайки тези стойности на променливите, впоследствие лесно ще можете да ги промените за работа с други БД. Интервали в името на БД, както и в имената на променливите и функциите, не се използват.
Съдържанието на файла 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
Отваряме терминала.
Вписваме командите:
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
Няма коментари:
Публикуване на коментар