PHP VI Adatbzisok My SQL php My Admin
PHP VI Adatbázisok, My. SQL
php. My. Admin Wamp ikon
php. My. Admin - Adatbázisok Új adatbázis Adatbázisok
php. My. Admin - Tábák Törlés Táblák Új tábla
php. My. Admin - 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
php. My. Admin - 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
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 col 1, col 2. . . from table where. . • Törlés: – delete from table • Módosítás: – update table set(. . . )
Feladatok insert into persons(name) values(‘Nikolaj’); insert into persons(name) values(‘Svan’); insert into persons(name) values(‘Johann’); 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’;
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);
SQL • http: //www. w 3 schools. com/sql/ • http: //dev. mysql. com/doc/refman/5. 0/en/ • http: //hu. wikipedia. org/wiki/SQL
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 php. My. Admin-nal futtasuk le a fájlban található utasításokat. (Copy/Paste –eljük be a teljes tartalmat és GO)
PHP + My. SQL • 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);
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);
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);
Serialize • Az előző órán obejtkum serialize: – __wakeup(), __sleep() metódus • Adatbázis kapcsolatokat nem mentünk el! Helyette: class Connection { protected $conn private $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(. . ); }
Feladatok • Készítsük el az előző órai DAO interfészt megvalósító My. SQL adatbázison működő osztályunkat My. Sql. DAO néven.
- Slides: 16