Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!
Zadejte Vaši e-mailovou adresu:
Kamarád fotí rád?
Přihlas ho k odběru fotomagazínu!
Zadejte e-mailovou adresu kamaráda:
PHP
PHP - Část XVII. (MySQL - vytvoření nové databáze)
23. října 2000, 00.00 | pokračování oblíbeného seriálu. Díl vhodný nejen pro uživatele MySql, ale obecně relačních db dostupných z PHP.
V této části se již budeme zabývat
spoluprací PHP s MySQL. Předpokládám, že již máte na svém systému
nainstalováno MySQL. Při instalaci MySQL se automaticky vytvořily 2 dostupné
databáze. Jedna se jmenuje mysql
a slouží k uchování přihlašovacích
jmen a hesel k dalším databázím, druhá se jmenuje test
a slouží
k testovacím účelům. My bychom ji pro začátek samozřejmě mohli použít,
ale abychom se naučili vytvářet nové databáze, vytvoříme si pro naše
testovací účely databázi novou.
Abychom mohli v PHP pracovat s MySQL, musíme se k němu připojit (předpokládám,
že máte spuštěného mysql daemona). V PHP existuje pro připojení k databázi
funkce MySQL_Connect();
. Její syntaxe:
MySQL_Connect(string počítač, string
uživatel, string heslo);
Jako počítač
uvádíme adresu
počítače, na kterém MySQL běží. V případě, že máte MySQL instalováno
na lokálním počítači, je tato adresa localhost
. Parametr uživatel
můžete vynechat, stejně tak i heslo
. Kdybyste ale měli MySQL
databázi na
nějakém vzdáleném serveru, museli byste o tyto údaje požádat správce
serveru (přístupovým právům se budeme věnovat někdy v budoucnu). Jestliže vám MySQL běží na lokálním počítači, můžete
dokonce vynechat i parametr počítač, protože pro tuto funkci je hodnota localhost
výchozí. Funkce vrací číslo spojení na databázi MySQL. Toto číslo slouží
pro identifikaci spojení v ostatních funkcích PHP pro práci s MySQL, proto
bude připojení k databázi MySQL uloženo v proměnné:
$spojeni = MySQL_Connect("localhost");
Abychom si našimi skripty mohli být opravdu jisti, raději si ověříme, zda spojení s MySQL proběhlo v pořádku:
if(!$spojeni):
echo "ERROR: nelze navázat spojení s databázovým serverm
!!!";
endif;
Pokud spojení proběhlo v pořádku, máme v
$spojeni
uloženo číslo spojení s MySQL, které budeme využívat v dalších
funkcích.
Další funkcí PHP se kterou se seznámíme, je funkce pro vytvoření
nové databáze. Její syntaxe:
MySQL_Create_DB(string databáze,
integer spojení);
Jako databáze
uvedeme jméno
nové databáze, která se má vytvořit. Toto jméno by nemělo obsahovat
diakritické znaky a mezery (nejlépe používejte jen znaky anglické abecedy a podtržítka). Za parametr
spojení
dosadíme již existující $spojeni
,
která identifikuje spojení s databázovým serverem. V případě, že tento
parametr vynecháme, použije se poslední vytvořené spojení. My si nyní
vytvoříme novou databázi se jménem php
, kterou budeme využívat
pro naše testovací skripty.
MySQL_Create_DB("php",
$spojeni);
Pokud vše proběhlo v pořádku, vrací
funkce logickou hodnotu TRUE
, v opačném případě vrací FALSE
.
Opakem této funkce je funkce pro smazání již existující databáze. Tato
funkce se jmenuje MySQL_Drob_DB();
a má stejné parametry jako
funkce pro vytvoření nové databáze.
Nyní již, předpokládám, máte vytvořenou
databázi se jménem php
. Tato databáze je zatím prázdná -
neobsahuje žádné tabulky s daty. Pro vytvoření nové tabulky již musíme
zkombinovat dva jazyky. Jazyk SQL a jazyk PHP. Jestliže chceme v databázi
vytvořit novou tabulku, musíme nejprve nadefinovat, jaká data a v jakém formátu
bude obsahovat. Musíme tedy definovat jména a datové typy jednotlivých položek.
Jazyk SQL pracuje s podobnými datovými typy jako některé programovací
jazyky. Přehled nejpoužívanějších datových typů:
Datový typ | Popis |
int | = celé číslo v rozsahu -2 147 483 648 až 2 147 483 647 |
smallint | = celé číslo v rozsahu -32 768 až 32 767 |
tinyint | = celé číslo v rozsahu 0 až 255 |
float | = číslo s pohyblivou řádovou čárkou |
decimal(p) | = desetinné číslo s p platnými číslicemi |
decimal(p, d) | = desetinné číslo s p platnými číslicemi a d platnými desetinnými místy |
money | = číslo jako peněžní částka (tento typ je snadno nahraditelný např. pomocí decimal(10, 2)) |
char(x) | = textový řetězec o délce x znaků (nejvíce však 255) |
varchar(x) | = textový řetězec o délce maximálně x znaků (nejvíce však 255) |
time | = čas ve formátu HH:MM:SS |
date | = datum ve formátu RRRR-MM-DD |
datetime | = datum a čas ve formátu RRRR-MM-DD HH:MM:SS |
blob | = speciální datový typ pro uložení binárních dat (soubory...) |
V jazyce SQL samozřejmě existuje více datových typů, zde jsou uvedeny jen ty nejdůležitější. Zájemce o bližší zkoumání datových typů MySQL odkazuji na originální dokumentaci, kterou jste si stáhli s MySQL.
Nyní již k vytvoření nové tabulky v naší
databázi php
. Slouží k tomu SQL příkaz CREATE TABLE
. Jeho použití si ukážeme
na obvyklém příkladě, který je použit ve většině knih o SQL, popřípadě
i v knihách o relačních databázích. Vytvoříme si tabulku s údaji o zaměstnancích
nějaké fiktivní firmy. Tabulka bude obsahovat rodné číslo zaměstnance,
jeho jméno + příjmení, adresu a plat. Do $sql
si uložíme SQL příkaz pro
vytvoření tabulky s danou strukturou:
$sql = "CREATE TABLE zamestnanci (
rc char(11) NOT NULL PRIMARY KEY,
jmeno varchar(40),
adresa varchar(60),
plat decimal(10, 2));";
Tento SQL příkaz říká, že se má vytvořit
tabulka s názvem zamestnanci
a má obsahovat položky:
rc
= rodné číslo - primární klíč tabulky - nesmí být prázdný
jmeno
= jméno a příjmení zaměstnance
adresa
= adresa zaměstnance
plat
= plat zaměstnance
V SQL příkaze jsme použili několik dalších
vlastností. Jednou z nich je vlastnost PRIMARY KEY
, která dané položce určuje,
že bude primárním klíčem. Jelikož každý záznam v tabulce musí obsahovat
primární klíč, musí být u této položky vlastnost NOT NULL
, která určuje,
že daná položka nesmí být prázdná. V tabulce musí mít každý záznam
jedinečný primární klíč, proto je nutné v tabulce určit za primární klíč
položku, u které je zřejmé, že se v tabulce nebudou její hodnoty opakovat.
V našem případě položka rodné číslo.
Teď si ukážeme, jak tento SQL příkaz využít
pomocí PHP. V PHP existuje pro provádění SQL příkazů funkce MySQL_DB_Query();
.
Její syntaxe je následující:
MySQL_DB_Query(string databáze, string SQL příkaz,
integer spojení);
Za atribut databáze
doplníme
jméno existující databáze, do které se má přidat daná tabulka. Jako
atribut SQL příkaz
uvedeme SQL příkaz, který se má vykonat. A
poslední atribut je stejný jako u předešlých funkcí - doplníme existující
spojení s databázovým serverem. Pro vytvoření naší tabulky zamestnanci
tedy použijeme:
MySQL_DB_Query("php", $sql,
$spojeni);
Místo $sql
bychom zde samozřejmě mohli
vypsat celý příkaz CREATE TABLE
, ale pro přehlednost se tato záležitost většinou
řeší pomocí pomocné proměnné (v našem případě $sql
).
Tímto bychom měli mít vytvořenu v databázi
php
novou tabulku zamestnanci
s danou strukturou. Pokud vše proběhlo v pořádku,
vrací funkce logickou hodnotu TRUE
, v případě selhání vrací FALSE
.
Většinu těchto operací můžeme řešit i přímo pomocí řádkového klienta MySQL (spouštěcí soubor mysql.exe), do kterého zapisujeme přímo SQL příkazy, které se mají provádět nad danou databází.
Pro dnešek vše, příště se naučíme vkládat data do tabulek.
Obsah seriálu (více o seriálu):
- PHP část I. - Úvod do jazyka
- PHP část II. - Instalace
- PHP - Část V. (Operátory)
- PHP - Část VIII.
- PHP - Část IX. (Vlastní funkce)
- PHP - Část X. (Proměnné ve funkcích)
- PHP - Část XI.
- PHP - Část XII. (Regulární výrazy)
- PHP - Část XIII. (Regulární výrazy podruhé)
- PHP - Část XIV. (PHP a databáze)
- PHP - Část XV. (Instalace MySQL ve Windows)
- PHP - Část XVI. (Instalace MySQL na LINUXu)
- PHP - Část XVII. (MySQL - vytvoření nové databáze)
- PHP - Část XVIII. (Vkládání dat do databáze)
- PHP - Část XIX. (MySQL - získávání dat z databáze)
- PHP - Část XX. (SQL - získávání dat z databáze II.)
- PHP - Část XXI. (SQL - získávání dat z databázových tabulek III)
- PHP - Část XXII. (MySQL - modifikace a mazání dat v tabulce)
- PHP část XXIII. - MySQL - přístupová práva
- PHP část XXIV. - PostgreSQL
- PHP část XXV. - Cookies
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007