php vi adatbázisok, mysql

16
PHP VI Adatbázisok, MySQL

Upload: alfonso-valentine

Post on 01-Jan-2016

37 views

Category:

Documents


1 download

DESCRIPTION

PHP VI Adatbázisok, MySQL. phpMyAdmin. Wamp ikon. phpMyAdmin - Adatbázisok. Új adatbázis. Adatbázisok. phpMyAdmin - Tábák. Törlés. Táblák. Új tábla. phpMyAdmin - Táblák. Hozzuk létre a ‘Persons’ táblát, 2 mezővel: id (bigint, not null, auto_increment, primary) - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PHP VI Adatbázisok, MySQL

PHP VIAdatbázisok, MySQL

Page 2: PHP VI Adatbázisok, MySQL

phpMyAdmin

Wamp ikon

Page 3: PHP VI Adatbázisok, MySQL

phpMyAdmin - Adatbázisok

Adatbázisok

Új adatbázis

Page 4: PHP VI Adatbázisok, MySQL

phpMyAdmin - Tábák

Táblák Új tábla

Törlés

Page 5: PHP VI Adatbázisok, MySQL

phpMyAdmin - Táblák

• Hozzuk létre a ‘Persons’ táblát, 2 mezővel:– id (bigint, not null, auto_increment, primary)– name (varchar 255, not null, unique)

Létrehozás

Page 6: PHP VI Adatbázisok, MySQL

phpMyAdmin - Táblák

• Hozzuk létre a ‘Currency’ táblát!create table currency (

id bigint not null auto_increment,

name varchar(255) not null,

rate double not null,

primary key (id),

unique (name)

)

SQL parancsok

Page 7: PHP VI Adatbázisok, MySQL

SQL parancsok

• Tábla létrehozása:– create table (....)

• Tábla törlése:– drop table

• Rekord beszúrása táblába:– insert into table(...) values(...)

• Lekérdezés:– select col1, col2... from table where ....

• Törlés:– delete from table

• Módosítás:– update table set(...)

Page 8: PHP VI Adatbázisok, MySQL

Feladatok

insert into persons(name) values(‘Nikolaj’);

insert into persons(name) values(‘Svan’);

insert into persons(name) values(‘Johann’);

select * from persons;

select * from persons where name like ‘Nik%’;

select id from persons where name = ‘Svan’;

update persons set name = ‘Sven’ where id = 2;

delete from persons where name = ‘Johann’;

Page 9: PHP VI Adatbázisok, MySQL

Idegen kulcsok

• Egy táblának egy mezője hivatkozik egy másik tábla mezőjére. Pl ha tároljuk, hogy kinek mennyi pénze van egy adott pénznemből, akkor hivatkoznunk kell a személyre, illetve a pénznemre.

create table money (person_id bigint not null,currency_id bigint not null,value double not null,foreign key(person_id) references persons(id) on update cascade on delete restrict,foreign key(currency_id) references currency(id) on update cascade on delete restrict);

Page 10: PHP VI Adatbázisok, MySQL

SQL

• http://www.w3schools.com/sql/

• http://dev.mysql.com/doc/refman/5.0/en/

• http://hu.wikipedia.org/wiki/SQL

Page 11: PHP VI Adatbázisok, MySQL

Feladatok

• Töröljük eddigi tábláinkat (persons, currency, money)

• A db.sql szöveges állomány az előző órai adatbázist tartalmazza. A phpMyAdmin-nal futtasuk le a fájlban található utasításokat. (Copy/Paste –eljük be a teljes tartalmat és GO)

Page 12: PHP VI Adatbázisok, MySQL

PHP + MySQL• Kapcsolódás:

– $conn = mysql_connect($host, $user, $pass);

• Adatbázis választás:– mysql_select_db($db, $conn);

• Lekérdezés:– $result = mysql_query($query, $conn);

• Adatok kinyerése:– $record = mysql_fetch_array($result);

• Memória felszabadítás:– mysql_free_result($result);

• Kapcsolat megszűntetése:– mysql_close($conn);

Page 13: PHP VI Adatbázisok, MySQL

Feladatok

$conn = mysql_connect(‘localhost’, ‘root’);

if (!$conn) die(‘connection error: ’ . mysql_error());

if (!mysql_select_db(‘mysql’, $conn))

die(‘database error: ’ . mysql_error());

$result = mysql_query(‘select id, name from persons’, $conn);

if (!result) die(‘query error: ’ . mysql_error());

while ($rec = mysql_fetch_array($result))

echo ‘id=‘ . $rec[‘id’] . ‘; name=‘ . $rec[‘name’] . ‘<br/>’;

mysql_free_result($result);

mysql_close($conn);

Page 14: PHP VI Adatbázisok, MySQL

Biztonság

• Hozzuk létre a registration.sql –ben megadott táblát, valamint használjuk a login.html és auth.php állományokat.

• Teszteljük le a 3 felhasználót, hogy helyesen működik-e a beléptető.

• Használjuk a következőket:– Username: fake' or 1=1 or '1'='1– Password: fake

• Kommentezzük ki az echo $query sort!• $u=addslashes($u); $p=addslashes($p);

Page 15: PHP VI Adatbázisok, MySQL

Serialize

• Az előző órán obejtkum serialize:– __wakeup(), __sleep() metódus

• Adatbázis kapcsolatokat nem mentünk el! Helyette:class Connection {

protected $connprivate $host, $user, $pass, $db;public function __sleep() {

return array(‘host’, ‘user’, ‘pass’, ‘db’);}public function __wakeup() {

$this->connect();}private function connect() {

$this->conn = mysql_connect(.........);}

Page 16: PHP VI Adatbázisok, MySQL

Feladatok

• Készítsük el az előző órai DAO interfészt megvalósító MySQL adatbázison működő osztályunkat MySqlDAO néven.