php vi adatbázisok, mysql
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 PresentationTRANSCRIPT
PHP VIAdatbázisok, MySQL
phpMyAdmin
Wamp ikon
phpMyAdmin - Adatbázisok
Adatbázisok
Új adatbázis
phpMyAdmin - Tábák
Táblák Új tábla
Törlés
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 $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(.........);}
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.