160 likes | 285 Views
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)
E N D
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) • name (varchar 255, not null, unique) Létrehozás
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
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(...)
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’;
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.w3schools.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 phpMyAdmin-nal futtasuk le a fájlban található utasításokat. (Copy/Paste –eljük be a teljes tartalmat és GO)
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);
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ó MySQL adatbázison működő osztályunkat MySqlDAO néven.