Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!

Tutorial PHP/MySQL

Wstawianie informacji

W poprzednich dwóch częściach wyjaśniłem Ci, co zamierzam przedstawić w tym kursie oraz pokazałem jak stworzyć bazę danych na potrzeby tego artykułu. W tym rozdziale będziemy uczyć się wstawiać dane do naszej bazy.

Łączenie się z bazą danych

Pierwszym krokiem, który musisz wykonać zanim zaczniesz pracę, jest połączenie się z serwerem MySQL. Jest to istotne, gdyż przy braku połączenia z bazą, wysyłane komendy będą kończyły się niepowodzeniem.

Dobrą praktyką jest wypisanie danych niezbędnych do połączenia się z bazą danych w jednym miejscu (np. w pliku) - wtedy, gdy zmienisz hasło, wystarczy dokonać edycji tylko tych kilku linijek kodu:

$username = 'nazwa użytkownika';
$password = 'hasło';
$database = 'nazwa bazy danych';

Na pewno zastanawiasz się, czy trzymanie hasła w pliku *.php jest bezpieczne. Bez obaw - pliki PHP są interpretowane przed wysłaniem odpowiedzi do klienta, więc niemożliwym jest podglądnięcie kodu źródłowego przez serwer www.

Kolejnym krokiem jest wydanie rozkazu PHP aby połączył się z bazą danych:

mysql_connect('localhost', $username, $password);

Funkcja ta nakazuje PHP połączyć się z serwerem 'localhost' (tzn. na komputerze, na którym działa skrypt) używając loginu i hasła zapisanych w zmiennych $username i $password. Zwykle jedna maszyna obsługuje zarówno system baz danych jak i serwer HTTP, więc przeważnie będziemy musieli łączyć się z "localhostem", chyba że nasz administrator nakaże nam podać inny adres.

Zanim zademonstruję Ci jak pracować z bazą danych, poznamy jeszcze jedną instrukcję:

mysql_close();

Jest to bardzo ważna komenda, albowiem odpowiada ona za zamknięcie połączenia z bazą danych. Twój skrypt wciąż będzie działał prawidłowo, nawet jeżeli nie wywołasz tej funkcji, lecz mogą pojawić się problemy ze zbyt dużą liczbą otwartych połączeń. Dobrym zwyczajem jest umieszczanie tej instrukcji w momencie, gdy jesteś pewny, że nie będziesz wykonywał żadnych operacji na bazie danych.

Wybór bazy danych

Po ustanowieniu połączenia z serwerem musisz wybrać bazę danych, na której chcesz operować. Musisz posiadać do niej prawa dostępu. Służy do tego poniższa komenda:

@mysql_select_db($database) or die("Nie udało się wybrać bazy danych");

Nakazuje ona PHP wybrać bazę danych o nazwie zapisanej w zmiennej $database (którą wcześniej zdefiniowałeś). Jeżeli operacja nie zakończy się powodzeniem, to skrypt zakończy działanie wysyłając komunikat

Nie udało się wybrać bazy danych

Użycie dodatkowego warunku or die jest przydatne, gdyż zostawia nam minimalną kontrolę błędów. Nie jest on konieczny do działania skryptów.

Wykonywanie poleceń

Teraz, gdy mamy już ustanowione połączenie oraz wybraną bazę danych, możemy zacząć wykonywanie poleceń.

Istnieją dwie metody wysyłania zapytań SQL. Pierwsza z nich to, po prostu, wpisanie komendy i wywołanie odpowiedniej funkcji. Tego sposobu użyjemy, jeżeli nie będziemy oczekiwać zwrócenia żadnych wyników.

Drugi sposób to przypisanie wyniku zapytania do zmiennej.

W tej części kursu użyjemy pierwszej metody, jako że nie będziemy oczekiwali żadnych rezultatów. Konstrukcja wygląda następująco:

mysql_query($query);

Korzyścią wynikającą z tego zapisu jest fakt, że każde kolejne zapytanie do bazy danych możesz wywoływać w ten sam sposób (kopiując wywołanie tej funkcji) zmieniając tylko zawartość zmiennej $query.

Wstawianie danych

W tej części rozdziału powrócimy do wcześniej stworzonej bazy danych. Dodamy do niej pierwsze informacje.

Imię: John
Nazwisko: Smith
Telefon stacjonarny: 01234 567890
Telefon komórkowy: 00112 334455
Fax: 01234 567891
E-mail: johnsmith@gowansnet.com
Strona domowa: http://www.gowansnet.com

Wszystkie te dane umieścimy w jednym zapytaniu

$query = "INSERT INTO contacts VALUES ('','John','Smith','01234 567890','00112 334455','01234 567891','johnsmith@gowansnet.com','http://www.gowansnet.com')";

Na pierwszy rzut oka całość wygląda na skomplikowaną, więc postaram się wytłumaczyć, co to wszystko znaczy.

Po pierwsze "$query =" oznacza, że przypisujemy treść zapytania do zmiennej o nazwie query. Kolejna część:

INSERT INTO contacts VALUES

jest całkiem łatwa do zrozumienia. Zapytanie to nakazuje PHP wstawienie do tablicy 'contacts' danych zawartych w nawiasach po słowie kluczowym 'VALUES'.

Pomiędzy nawiasami wpisujemy wszystkie dane, które mają zostać zapisane. Wykorzystywane są wszystkie pola zgodnie z kolejnością zadeklarowania ich w tabeli. Dane wstawiamy pomiędzy apostrofami. np.

John

zostanie wstawiony do drugiego pola naszej tablicy, które zawiera imię osoby.

Zapewne zauważyłeś, że do pierwszego pola tablicy 'contacts' (id) nie jest wstawiana żadna wartość. Tak się dzieje, ponieważ pole 'id' jest kluczem głównym tablicy, więc żadne dwa rekordy w bazie danych nie mogą posiadać tych samych wartości w tej kolumnie; właśnie dlatego utworzyliśmy te pole z atrybutem 'auto_increment', co oznacza, że jeśli nie podamy wartości pola id, to rekord automatycznie otrzyma kolejny dostępny identyfikator. Nasz pierwszy wstawiany rekord będzie miał wartość ID=1.

W następnym rozdziale

W kolejnej części tego podręcznika pokażę Ci jak przy pomocy formularzy i zmiennych wstawiać informacje do bazy danych, a następnie je wyświetlać.

Informacje na podobny temat:
Wasze opinie
Wszystkie opinie użytkowników: (7)
gdzie link?
Piątek 15 Lipiec 2011 12:45:10 pm - beneglih

Fajny tutorial, tylko dlaczego na jego końcu jest informacja, że skrypt można pobrać, dwukropek i puste miejsce, brak linka...

ort
Sobota 13 Marzec 2010 10:02:17 pm - katwer <katwer_at_op.pl>

Co jak co, ale artykuł do druku na poważnym portalu, to już powinien przejść przez standardowe sprawdzanie pisowni choćby zautomatyzowane, jeśli autor nie wie, jak się pisze HASŁO.

Sorry, ale takie lekceważenie języka polskiego - musiałam.

pytanie
Niedziela 01 Lipiec 2007 8:56:38 pm - bercik156 <fifunia07_at_wp.pl>

mam pytanie jak zmienić w bazie danych język żeby na stronie były polskie znaki??

złeeee
Poniedziałek 07 Maj 2007 9:01:03 am - wbeatn <wbeatn_at_gmail.com>

dlaczego w tym artykule jest podany bledny kod ? strona z dodawaniem do bazy mi dziala, to samo jest ze strona ktora wyswietla rekordy, ale strona ktora ma wyswietlic formularz edytujacy wywala blad 'Warning: mysql_numrows(): supplied argument is not a valid MySQL ...' .. robie wszystko wedlug instrukcji i takie cos :/

Dłąd :D
Sobota 25 Listopad 2006 11:38:44 pm - sabistik <wiktorski_at_poczta.php.pl>

haha, Czemu nikt wcześniej tego nie zraportował:
http://irc.php.pl/blog/?id=392
?? ;D

Wyjaśnienie małe
Piątek 27 Październik 2006 9:26:17 pm - slump <slump_Ilawa_at_wp.pl>

Twoje sugestje są jak najbardziej trafne, jednak pamiętaj, że jest to tylko translacja arta z języka Angielskiego.
Pozdrawiam

Kilka luźnych uwag
Czwartek 26 Październik 2006 12:12:12 pm - Diabl0

Rozumiem że jest to art dla totalnie początkujących i przeglądałem go bardzo pobieżnie, ale mimo wszystko mam kilka zastrzeżeń:

1 - instalowanie phpmyadmin na serwerze bez odpowiedniego zabezpieczenia go - kto się opiekuje serwerami niech spojrzy sobie w logi jak często trafiają się roboty szukające phpmyadmin - nie sądzę aby szukały one sobie tylko z czystej ciekawości. Trzeba było przynajmniej napisać jak go zabezpieczyć przez .htaccess

2 - SQL incjection - wstawianie danych pochodzących od usera prosto do bazy bez sprawdzenia i zabezpieczenia. Temat ten wszędzie jest tak często wałkowany że tutorial dla początkujących z takim błędem to duży imho duża porażka. Aż tak ciężko było poświęcić dwa akapity na wyjaśnienie zagrożenia i zaproponowanie chociażby mysql_escape_string?

3 - nie wiem skąd takie parcie na while ($i < $num) i każdorazowe przepisywanie danych? IMHO dużo wygodniejsze (zwłaszcza dla początkujących, a nie wiem też czy nie szybsze) jest while ($row = mysql_fetch_assoc($ret).

4 - drobiazg, ale: <? :) <?php jest bardziej prawidłowe zwłaszcza że już słyszałem jakieś pogłoski że <? ma zostać z czasem usunięte :)

5 - formatowanie kodu - ja rozumiem że system znaczników na php.pl może utrudniać zachowanie wcięć itp, ale skoro to jest tutorial dla początkujących to przydało by się też zadbać o uczenie ich dbałości o wygląd kodu i jego staranniejsze formatowanie - to naprawdę ułatwia w przyszłości życie a dzięki odrobiny praktyki stosuje się praktycznie odruchowo.

To takie moje drobne uwagi po pobieżnym przejrzeniu arta (głównie fragmentów kodu) . Nie jest to żadna miażdżąca krytyka - po prostu wychodzę z założenia że o ile w arcie dla doświadczonych programistów nawet nie było by sensu zwracać na to uwagi (w końcu każdy i tak ma już wyrobione własne nawyki i przyzwyczajenia), to jednak w arcie dla początkujących warto położyć większy nacisk na tego typu drobiazgi aby od początku wtłaczać i wyrabiać w nich dobre nawyki.

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System