Jacek | 2005-12-21 10:44:57
Trochę o bazie MySQL na podstawie prostej listy książek.
Przydatna jest znajomość podstaw PHP!
Zanim cokolwiek wykonamy, musimy utworzyć tabelę. Zwykle robimy to w panelu administracyjnym konta, używając graficznego skryptu phpMyAdmin. My jednak stworzymy ją ręcznie. Po zdobyciu informacji (nazwa serwera, użytkownik, hasło, baza) możemy przejść do konkretów.
<?php
// Łączymy się z serwerem
mysql_connect('adres_bazy_danych', 'nazwa_użytkownika_bazy', 'hasło_użytkownika');
// Wybieramy bazę, której będziemy używać
mysql_select_db('nazwa_bazy_danych');
mysql_query('Wykonujemy polecenia SQL');
?>
W ten sposób łączymy się z bazą MySQL.
Tworzenie tabeli jest proste, używamy mnie/więcej takiej składni:
CREATE TABLE `nazwa_tabeli` (
`nazwa_pola` TYP_POLA,
`pole2` TYP_POLA2
)
W przykładzie zapytanie do bazy będzie wyglądała tak:
CREATE TABLE `ksiazki` (
`nazwa` VARCHAR(50),
`autor` VARCHAR(50),
`opis` TEXT
)
Utworzyliśmy tabelę ksiazki
z polami: nazwa
, autor
(dowolny tekst do 50 znaków) oraz opis
(dowolny tekst; max. 65535 bajtów). Wszystkie typy danych dobrze opisano w artykule na home.pl
INSERT INTO `tabela` (`nazwa_pola_1`, `nazwa_pola_2`)
VALUES ('wartość pola 1', 'wartość pola 2')
Po przykładowym zapytaniu:
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`)
VALUES ('Dan Brołn', 'Cyfrowa Twierdza',
'NSA konstruuje superkomputer, który może...');
INSERT INTO `ksiazki` (`autor`, `nazwa`, `opis`)
VALUES ('Zbigniew Znienacki', 'Pan Samochodzik',
'To cykl książek o perypetiach tytułowego...');
tabela będzie wyglądać tak:
autor | nazwa | opis |
---|---|---|
Dan Brołn | Cyfrowa Twierdza | NSA... |
Zbigniew Znienacki | Pan Samochodzik | To cykl... |
Celowo zapisałem nazwiska autorów z błędami. Zajmiemy się zatem zmienianiem rekordów:
UPDATE `tabela` SET `nazwa_pola`='wartość'
WHERE `nazwa_pola_2`='wartość_pola_2'
UPDATE `ksiazki` SET `autor`='Dan Brown'
Po wykonaniu takiego zapytania (bez WHERE
) nasza tabela będzie wyglądać w ten sposób:
autor | nazwa | opis |
---|---|---|
Dan Brown | Cyfrowa Twierdza | NSA... |
Dan Brown | Pan Samochodzik | To cykl... |
Więc nie o to nam chodziło - musimy sprecyzować, której książce przypisać autora:
UPDATE `ksiazki` SET `autor`='Zbigniew Nienacki'
WHERE `nazwa`='Pan Samochodzik'
I już po wszystkim:
autor | nazwa | opis |
---|---|---|
Dan Brown | Cyfrowa Twierdza | NSA... |
Zbigniew Nienacki | Pan Samochodzik | To cykl... |
Składnia:
SELECT `nazwy_pól` FROM `tabela`
I możemy rozszerzyć ją o WHERE
z poprzedniego rozdziału (używamy w ten sam sposób). Możemy również ograniczyć ilość przekazywanych rekordów.
SELECT `nazwy_pól` FROM `tabela` LIMIT 5
Co spowoduje pokazanie 5 pierwszych wierszy tabeli. Ale to nie całe zastosowanie LIMIT.
SELECT `nazwy_pól` FROM `tabela` LIMIT 9,5
Tu pobieramy 5 rekordów poczynając od dziesiątego (numeracja zaczyna się od 0)
Powracamy do PHP. Istnieją funkcje, które z wyniku mysql_query "wychwytują" dane. Jedną z nich jest mysql_fetch_array()
Zwraca ona kolejno otrzymane wiersze (za każdym razem jeden). Praktyczne użycie:
<?php
// Łączymy się z serwerem
mysql_connect('adres_bazy_danych',
'nazwa_użytkownika_bazy',
'hasło_użytkownika_bazy');
// Wybieramy bazę, której będziemy używać
mysql_select_db('nazwa_bazy_danych');
$wynik = mysql_query('SELECT * FROM `ksiazki`
WHERE `nazwa` LIKE \\'Cy.rowa%\\'');
/* Zwraca książki, których pole nazwa to:
Cy(dowolny znak)rowa(cokolwiek) */
/* Do rekordów odwołujemy się tak:
$wynik_mysql_fetch_array['nazwa_pola_w_bazie']
lub tak:
$wynik_mysql_fetch_array[numer_kolejny_pola] */
while($rzad = mysql_fetch_array($wynik)) {
echo 'Tytuł: '.$rzad['nazwa'].'<br>
Autor: '.$rzad['autor'].'<br>
Opis: '.$rzad['opis'].'<hr>';
}
?>
DELETE FROM `tabela`
Usunie wszystkie rekordy z tabeli, warto więc użyć opisanego wcześniej WHERE
W razie problemów zapraszam do skorzystania z formularza kontaktowego
© by Jacek Kowalski Sponsor: poszukiwany