Download - PHP VI Adatbázisok, MySQL
![Page 1: PHP VI Adatbázisok, MySQL](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/1.jpg)
PHP VIAdatbázisok, MySQL
![Page 2: PHP VI Adatbázisok, MySQL](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/2.jpg)
phpMyAdmin
Wamp ikon
![Page 3: PHP VI Adatbázisok, MySQL](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/3.jpg)
phpMyAdmin - Adatbázisok
Adatbázisok
Új adatbázis
![Page 4: PHP VI Adatbázisok, MySQL](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/4.jpg)
phpMyAdmin - Tábák
Táblák Új tábla
Törlés
![Page 5: PHP VI Adatbázisok, MySQL](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022042703/5681325f550346895d98f300/html5/thumbnails/16.jpg)
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.