30 dniowy kurs php – dzień 24 – MySQL tworzenie bazy i tabel


Back-end (php, mysql)

Do wykonywania operacji dotyczących MySQL w PHP używa się konstrukcji mysql_query(). Z bazą łączyliśmy się przez mysql_connect(). Jak widzisz wszystkie zapytania dotyczące MySQL mają przedrostek mysql. Innym sposobem na „odpytywanie” bazy jest zakładka SQL w phpMyAdmin. Możesz tam wpisywać te same zapytania. które umieszcza się w funkcji mysql_query(). Stwórzmy na początek nową bazę. Oczywiście najpierw potrzebujemy mieć aktywne połączenie z bazą. Bez niego żadna operacja na bazach MySQL nie zostanie wykonana. Zaloguj się najpierw do phpMyAdmina i zobacz po lewej stronie listę utworzonych baz danych. Powinieneś zobaczyć takie bazy jak: information_schema, mysql, performance_schema. Następnie wywołaj poniższy skrypt php:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>Łączenie z bazą</title>
</head>
<body>

<?php
$serwer = 'localhost';
$uzytkownik = 'root';
$haslo = 'hasloZphpmyadmina';

$polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);

if(!$polaczenie)
{
 die('Błąd połączenia: ' . mysql_error());
}

// tworzymy bazę danych
if (mysql_query('CREATE DATABASE baza', $polaczenie))
{
 echo 'Baza utworzona';
}
else
{
 echo 'Błąd tworzenia bazy: ' . mysql_error();
}

mysql_close($polaczenie);
?>

</body>
</html>

Powinieneś zobaczyć komunikat „Baza utworzona”. Zapytania w MySQL wyglądają dość charakterystycznie. Pisze się je zazwyczaj z dużych liter. W funkcji mysql_query() najpierw wpisujemy zapytanie, a następnie po przecinku musimy umieścić funkcję mysql_connect() w której łączymy się z bazą na której ma zostać wykonane zapytanie. Oczywiście łatwiej wpisać tam zmienną, którą wcześniej zdefiniowaliśmy jako połączenie.

Create database

Zapytanie CREATE DATABASE tworzy nową bazę, której nazwę podajemy zaraz po zapytaniu. W powyższym przykładzie utworzyliśmy bazę o nazwie baza. Przejdź teraz do myPhpAmina (po pomyślnym wykonaniu wcześniejszego skryptu), odśwież i zobacz czy na liście po lewej stronie pojawiła się nowa baza. Jeśli widzisz tam wpis „baza” to wszystko działa poprawnie. Jeśli klikniesz na nowo utworzoną bazę otworzy się strona z możliwością tworzenia tabel i informacją „No tables found in database”. Pora więc na stworzenie nowej tabeli przy pomocy php.

Create table

Zapytanie tworzenia tabel jest równie intuicyjne co tworzenia baz. CREATE TABLE nazwaTabeli. Pojawiają się jednak jeszcze dodatkowe parametry w nawiasach. Wpisujemy w nich nazwy kolumn jakie mają pojawić się w nowej tabeli oraz typ kolumny (czy będą to np. liczby, tekst z ograniczoną ilością znaków, data). Tak jak do utworzenia nowej bazy potrzebowaliśmy aktywnego połączenia z bazą, tak do tworzenia tabel potrzebujemy (oprócz połączenia) aktywnie wybranej utworzonej bazy. Do wybrania bazy służy funkcja php mysql_select_db(„nazwaBazy”, mysql_connect())

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>Łączenie z bazą</title>
</head>
<body>

<?php
$serwer = 'localhost';
$uzytkownik = 'root';
$haslo = 'hasloZmyphpadmina';

$polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);

if(!$polaczenie)
{
 die('Błąd połączenia: ' . mysql_error());
}

// tworzymy bazę danych
if (mysql_query('CREATE DATABASE baza', $polaczenie))
{
 echo 'Baza utworzona.';
}
else
{
 echo 'Błąd tworzenia bazy: ' . mysql_error();
}

// wybieramy bazę
mysql_select_db("baza", $polaczenie);
// tworzymy tabelę 
mysql_query("CREATE TABLE ludzie(Imie varchar(15), Nazwisko varchar(15), Wiek int)", $polaczenie);

mysql_close($polaczenie);
?>

</body>
</html>

Powinieneś zobaczyć komunikat „Błąd tworzenia bazy: Can’t create database ‚baza’; database exists”. Skrypt nie może po prostu utworzyć bazy o nazwie ‚baza’ ponieważ ta już istnieje. Natomiast zapytanie mysql_query powinno przebiec nam pomyślnie. Odśwież teraz myPhpAdmina i zobacz, że w wcześniej utworzonej bazie pojawiła się tabela o nazwie ludzie. Kliknij w nią (powinna wyświetlić się po lewej stronie będąc w bazie ‚baza’) a zobaczysz kolumny tabeli Imie, Naziwsko i Wiek.

Primary Key

W ten sposób mamy już bazę i tabelę. Czego jeszcze potrzebujemy? Tzw. PRIMARY KEY, czyli kolumny w tabeli, która będzie generowała nam unikatowy nr dla każdego wpisu. Jest to bardzo przydatne, gdyż zapobiega nakładaniu się tych samych wpisów na siebie. Mogą być przecież 2 osoby w tym samym wieku z takim samym imieniem i nazwiskiem. Powyższe zapytanie tworzące nową tabelę powinniśmy więc lekko zmodyfikować. Musimy jednak wprowadzić jeszcze jedno zapytanie, które zniszczy nam tabelę przed jej utworzeniem, jeśli taka już istnieje.

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8" />
<title>Łączenie z bazą</title>
</head>
<body>

<?php
$serwer = 'localhost';
$uzytkownik = 'root';
$haslo = 'hasloZmyphpadmina';

$polaczenie = mysql_connect($serwer, $uzytkownik, $haslo);

if(!$polaczenie)
{
 die('Błąd połączenia: ' . mysql_error());
}

// tworzymy bazę danych
if (mysql_query('CREATE DATABASE baza', $polaczenie))
{
 echo 'Baza utworzona.';
}
else
{
 echo 'Błąd tworzenia bazy: ' . mysql_error();
}

// wybieramy bazę
mysql_select_db("baza", $polaczenie);
// niszczymy tabelę jeśli taka istnieje 
mysql_query("DROP TABLE IF EXISTS ludzie");
// tworzymy nową tabelę
mysql_query("CREATE TABLE ludzie(numerID int NOT NULL AUTO_INCREMENT, PRIMARY KEY(numerID), Imie varchar(15), Nazwisko varchar(15), Wiek int)", $polaczenie);

mysql_close($polaczenie);
?>

</body>
</html>

Drop table if exist

Zapytanie DROP TABLE IF EXIST niszczy podaną tabelę, jeśli ta istnieje. NOT NULL AUTO_INCREMENT odpowiada za stworzenie kolumny, która nie będzie pusta i będzie automatycznie sama zwiększać swój nr o 1 przy kolejnym wpisie. Skróty typu int, varchar odnoszą się do typu danej kolumny. Int to skrót od integer czyli liczby całkowitej. Mogą więc w takiej kolumnie pojawić tylko i wyłącznie liczby. Varchar oznacza tekst a liczba w nawiasie limit maksymalnej długości tekstu. Podsumowując. W tej lekcji utworzyliśmy bazę, utworzyliśmy tabelę. Masz więc już solidne podstawy aby pracować na bazach MySQL przy pomocy PHP. W następnej lekcji zajmiemy się umieszczaniem wpisów do tabel, czyli zapełnianiem bazy danymi.