Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Adatbázis-kezelés Tarcsi Ádám 2011. január. 15. MySQL és PHP.

Hasonló előadás


Az előadások a következő témára: "Adatbázis-kezelés Tarcsi Ádám 2011. január. 15. MySQL és PHP."— Előadás másolata:

1 Adatbázis-kezelés Tarcsi Ádám (ade@inf.elte.hu)ade@inf.elte.hu 2011. január. 15. MySQL és PHP

2 Mai anyag  MySQL és a phpMyAdmin  Admin műveletek  Tárolt eljárások, triggerek  Tranzakciókezelés MySQL-ben

3 MySQL és a phpMyAdmin  http://ikon.inf.elte.hu/wiki/index.php?title=MySQL_t%C3%ADpusok http://ikon.inf.elte.hu/wiki/index.php?title=MySQL_t%C3%ADpusok  http://db-tanar.elte.hu/FSZ_levelezo- 1/Gyakorlat/MySQL_es_a_phpMyAdmin.docx http://db-tanar.elte.hu/FSZ_levelezo- 1/Gyakorlat/MySQL_es_a_phpMyAdmin.docx 3

4 Gyakorlás: Albums tábla  Létrehozás: CREATE TABLE IF NOT EXISTS `albumok` ( `id` int(10) NOT NULL, `nev` varchar(45) character set utf8 collate utf8_hungarian_ci NOT NULL, `leiras` varchar(100) character set utf8 collate utf8_hungarian_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;  Feltöltés INSERT INTO `albumok` (`id`, `nev`, `leiras`) VALUES (1, 'Album1', 'Első album'), (2, 'Album2', 'Második album'); 4

5 MySQL admin műveletek – 1.  Start server: /etc/init.d/mysql start  Stop server: /etc/init.d/mysql stop  Restart server: /etc/init.d/mysql restart  Mentés (Dump): $ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sq l]  Visszatöltés (Restore): mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql] 5

6 MySQL admin műveletek – 2. User létrehozás: CREATE USER 'user1'@'localhost' IDENTIFIED BY 'pass1'; Adatbázis létrehozás: CREATE DATABASE user1; Jogok adása: GRANT all privileges on user1.* to 'user1'@'localhost' identified by 'wabp2010'; User törlés: DROP USER 'user1'@'localhost'; Adatbázis törlés: DROP DATABASE if exists user1; 6

7 Tárolt eljárások delimiter // CREATE PROCEDURE elsoproc(OUT param1 INT) BEGIN SELECT COUNT(*) INTO param1 FROM albumok; END// delimiter ; CALL elsoproc(@a) SELECT @a; 7

8 Trigger 8

9 Tranzakciókezelés – 1. $tranz= mysql_query(" BEGIN WORK; SELECT adatok FROM test WHERE id='1' FOR UPDATE; ROLLBACK; UPDATE test SET adatok=adatok-1100 WHERE id='1'; COMMIT; "); 9

10 Tranzakciókezelés – 2. <?php $utaltOsszeg = 500; //célszámla kikeresése $e = mysql_query("SELECT id FROM bankszamlak WHERE szamlaszam = '12345678-12345678'"); $celszamla = mysql_fetch_row($e); //az indító számla egyenlege elegendő az utaláshoz? $e = mysql_query("SELECT id, egyenleg FROM bankszamlak WHERE szamlaszam = '87654321- 87654321'"); $utalo = mysql_fetch_array($e); if($utalo['egyenleg'] >= $utaltOsszeg){ //ha elegendő az egyenleg vonjuk le belőle //tranzakció indítása mysql_query("START TRANSACTION"); mysql_query('UPDATE bankszamlak SET egyenleg = egyenleg-'. $utaltOsszeg. ' WHERE id = '. $utalo['id']); //adjuk hozzá a célszámla egyenlegéhez mysql_query('UPDATE bankszamlak SET egyenleg = egyenleg+'. $utaltOsszeg. ' WHERE id = '. $celszamla[0]); //eddig minden rendben hajtsuk végre a tranzakciót mysql_query('COMMIT'); } ?> 10

11 PHP és az adatbázisok  Telepítés: AMP, kiterjesztések - egyszerű  Speciális függvényeken/osztályokon, (csomag kiterjesztésekkel) keresztül érjük el. ▪ mysql: ▪ mysqli: ▪ OCI8: Oracle (ezekhez Oracle kliens is szükséges)  Adatbázisok felderítése: ▪ phpinfo()  Segítség: ▪ http://hu2.php.net/manual/en/book.mysqli.php http://hu2.php.net/manual/en/book.mysqli.php 11

12 Tipikus adatbázis használat  Kapcsolódás  SQL utasítások futtatása (pl.: lekérdezés)  Eredmények feldolgozása  Kapcsolat bontása 12

13 Gyakorlat  1. "régi" mysql függvények használatával.  2. Új mysqli fügvényekkel  3. Szűrés megvalósítása  4. BIND  5. Adatbáziselérési réteg absztrakciója: mysql.inc

14 14 BIND: SQL változóhoz kötjük a PHP változót  Az SQL utasítás (1) parszolása (2) után a belső változókat feltöltjük az értékekkel (3), majd kiadjuk a futtatás parancsát (4). 1.$sql=”insert into album (nev, leiras, user_id) values (:nev, :leiras, :user_id)”; 2.$stmnt = OCIParse($conn, $sql); 3.OCIBindByName(, belső változó, érték, hossz (-1 az automatikus méretmegadás)); OCIBindByName($stmnt,":nev",$nev,-1); OCIBindByName($stmnt,":leiras",$leiras,- OCIBindByName($stmnt,":user_id",$user_id,-1); 4.OCIExecute($stmnt);

15 .htaccess  egyéni hibalapok (404-es hiba)  jelszavas védelem  látogatók tiltása IP alapján  alapértelmezett fájl megváltoztatása (pl. index.html  alma.php)  átirányítások  könyvtárlistázás tiltása  adott fájlok elérésének letiltása

16 Példa DirectoryIndex jelentkezes.php Deny from all

17 Jelszavas védelem AuthName "Protected Area" AuthType Basic AuthUserFile /usr/home/www/lapodcime/vedettkonyvtar/.ht passwd require valid-user.htpasswd nev:$3$OAvE458H4vgG

18 Látogatók engedélyezése / tiltása IP cím alapján order allow,deny allow from 123.45.6.7 allow from 012.34.5. deny from all

19 Egyéb.htaccess  Átirányítás: Redirect /regikonyvtar/ http://www.honlapodcime.hu/ujkonyvtar/ RedirectMatch 301 ^/njszt-ikon/$ /ikon.htm  Könyvtárlistázás tiltása IndexIgnore * IndexIgnore *.gif *.jpg  Könyvtárlistázás engedélyezése Options +Indexes


Letölteni ppt "Adatbázis-kezelés Tarcsi Ádám 2011. január. 15. MySQL és PHP."

Hasonló előadás


Google Hirdetések