Upload
norman-bradford
View
18
Download
4
Embed Size (px)
DESCRIPTION
6. előadás: PHP-MySQL Barabás Péter. WEB TECHNOLÓGIÁK. Tartalom. MySQL áttekintés PHP MySQL függvények Példák. MySQL – Parancssori kliens. MySQL documentáció {MYSQL_INSTALL_DIR}\ docs \ manual _ toc.html Telepítési instrukciók WAMP, XAMPP részeként MySQL önállóan - PowerPoint PPT Presentation
WEB TECHNOLÓGIÁK
6. előadás: PHP-MySQL
Barabás Péter
Tartalom
MySQL áttekintés PHP MySQL függvények Példák
MySQL – Parancssori kliens MySQL documentáció
{MYSQL_INSTALL_DIR}\docs\manual_toc.html Telepítési instrukciók
WAMP, XAMPP részeként MySQL önállóan
Csatlakozás parancssorból mysql [OPTIONS] [DB] mysql –u <usernév> –p <dbnév>
SQL script futtatás mysql –u <usernév> -p < script.sql
GUI client Mysql Control Center PhpMyAdmin
Adattábla létrehozás
Web_db adatbázis létrehozása: CREATE DATABASE web_db;
Notes nevű tábla létrehozása: USE web_db; CREATE TABLE notes (…); Teszt adatok beszúrása
Érdemes script fájlban megírni majd futtatni az előbb említett módokon
Alap utasítások(emlékeztető) CREATE
Adatbázisok és táblák (egyéb objektumok) létrehozása SELECT
Táblaadatok lekérdezése adott feltételre illeszkedően DELETE
Egy vagy több sor törlése a táblából INSERT
Új sor (vagy sorok) beszúrása a táblába UPDATE
Rekord módosítás ALTER
Tábla (egyéb db objektum) szerkezet módosítása
PHP-MySQL függvények
Kapcsolódás adatbázishoz Lekérdezés Eredmények kezelése Erőforrások felszabadítása Kapcsolat bezárás
Kapcsolódás adatbázishoz
mysql_connect(server, username, password) Kapcsolódás a MySQL szerverhez egy adott porton Alapértelmezetten: „localhost:3306” Username és password sztring típusúak Visszatérési érték FALSE hiba esetén
Példa $db_link =
mysql_connect("localhost:3306","test", "123");
Létezik perzisztens kapcsolat: mysql_pconnect
Példa
Adatbázis kiválasztása
mysql_select_db(name, link) Name: adatbázis neve (sztring) Link: opcionális, egy nyitott kapcsolat
referenciát vár, amit a connect visszaad Amennyiben a link nincs megadva, az
utolsó nyitott kapcsolatot használja Visszatési érték: TRUE sikeresség
esetén, egyébként FALSE Példa
mysql_select_db("web_db");
Példa
Hibakezelés – I.
mysql_error(link) Hibaüzenettel vagy hibakóddal tér vissza Link opcionális Az utolsó nyitott kapcsolatot használja,
amennyiben a link nincs megadva Ha nincs hiba, akkor üres stringgel
tér vissza Példa
mysql_error();
Hibakezelés – II.
mysql_no(link) A hiba kódjával tér vissza Link opcionális Az utolsó nyitott kapcsolatot használja,
amennyiben a link nincs megadva Ha nincs hiba, a visszatérési érték 0 Példa
mysql_no();
Példa
Utasítások készítése – I.
mysql_query(query, link) select lekérdezést készítése A query a lekérdezés szövege Ne tartalmazzon a query záró pontosvesszőt A visszatérési értéke egy erőforrás azonosító,
vagy FALSE, amennyiben a lekérdezés Hibás SHOW vagy DESCRIBE
Példa (a books tábla összes sorának lekérdezése) $query = "SELECT * FROM books"; $result = mysql_query($query);
Utasítások készítése – II. INSERT and UPDATE utasítások
erőforrás Visszatérési érték:
TRUE sikeresség esetén FALSE hiba esetén
Példa (a könyv tábla szerkezeti leírása) $query = "DESCRIBE books"; $status = mysql_query($query);
Példa
Metadatok kezelése
mysql_list_fields(database, table, link) Metadatokat szolgáltat az adott
adatbázis adott táblájáról A visszatérési érték tartalmazza a tábla
metaadatait (oszlopnevek, típusok) Példa
$fields = mysql_list_fields("web_db", "books");
Tábla mezőinek darabszáma
mysql_num_fields(result) A tábla mezőinek darabszámát adja vissza A result paraméter egy erőforrás
referencia, amit a mysql_list_fields függvény ad vissza
Példa $fields = mysql_list_fields("web_db",
"books"); $num_columns =
mysql_num_fields($fields);
Tábla mezőinek neve
mysql_field_name(result, index) A tábla index-edik mezőjének nevével tér
vissza (index: 0,1,…) A result paraméter egy erőforrás
referencia, amit a mysql_list_fields függvény ad vissza
Példa: az első mező neve $fields = mysql_list_fields("web_db",
"books"); $isbn = mysql_field_name($fields, 0);
Példa
Adatsorok kezelése – I.
mysql_fetch_row(result) Minden hívása egy indexelt tömb következő
sorával tér vissza A result paraméter egy erőforrás referencia,
amit a mysql_query függvény ad vissza A visszatérési érték FALSE, ha már nincs több
sor Példa
$query = "SELECT * FROM books"; $result = mysql_query($query); $row = mysql_fetch_row($result); // row 0 $isbn = $row[0]; // isbn for row 0
Adatsorok kezelése – II.
mysql_fetch_assoc(result) Működése hasonló a mysql_fetch_row
működéséhez, de a következő sorra egy asszociatív tömbként hivatkozhatunk
Példa $query = "SELECT * FROM books"; $result = mysql_query($query); $row =
mysql_fetch_assoc($result); // row 0 $isbn = $row['isbn']; // isbn for row 0
Adatsorok kezelése – III.
mysql_fetch_array(result) A mysql_fetch_row, mysql_fetch_assoc
kombinációja A következő sorra asszociatív és indexelt
tömbként is lehet hivatkozni Példa
$query = "SELECT * FROM books"; $result = mysql_query($query); $row = mysql_fetch_array($result); // row 0 $isbnA = $row[0]; // isbn for row 0 $isbnB = $row['isbn']; // can also get it this
way
Adatsorok kezelése – IV.
mysql_num_rows(result) Egy lekérdezés eredményrekordjainak
számát adja vissza Result a mysql_query által visszaadott
erőforrás mysql_affected_rows(result)
INSERT, UPDATE, or DELETE utasítások után használatosak
Visszatér az érintett rekordok számával result paraméter a mysql_query visszatérési
értéke
Egyéb függvények
mysql_real_escape_string(string,link) Visszatér egy átalakított sztinggel, amit
biztonságosan használhatunk a mysql_query-ben MySQL 4.1-től használhatóak a mysqli_...
Függvények Több lehetőség, Új funkcionalitások OO interface Tárolt eljárások támogatása Tranzakciókezelés Fejlettebb debugolási lehetőségek
Erőforrások felszabadítása mysql_free_result(result)
Egy adott erőforrás által lefoglalt memória felszabadítása
Result: erőforrás referencia Hívása nem szükséges, kivéve nagy
eredményhalmazok esetén Automatikusan lefut, amikor a script futása
véget ér mysql_close(link)
Bezárja az adatbázis kapcsolatot Perzisztens kapcsolatokra nincs hatással
Mezőnevek feldolgozása
Eredményrekordok feldolgozása – I.
Eredményrekordok feldolgozása – II.
Db_connect függvény
Scriptekben használatos Érdemes egy db_connect.php nevű
file-ba írni és includálni
Books adatbázis példa – I.Books.sql
Books adatbázis példa – II.
Books.sql
Books adatbázis példa – III. books.sql futtatása
parancssorban mysql -u xxxxx -p < c:/.../books.sql
Lehet phpMyAdmin-ban is Következő lépés:
Dbase.php írása A könvyadatokat megjeleníti HTML
táblázatban
Books adatbázis példa – IV.
Dbase.php – I.
HTML header info
Dbase.php – II.
Kapcsolódás $db_link = db_connect("web_db");
Ez a függvény a db_connect.php include file-ban van
Az include path a php.ini-ben definiált include_path=".;c:\Apache\
phpincludes"
Dbase.php – III.
Lekérdezzük az összes rekordot az összes mezővel $query = "SELECT * FROM books"; $result = mysql_query($query) or
die("SQL Query failed"); Tábla tulajdonságok lekérdezése
$fields = mysql_list_fields("web_db", "books");
$num_columns = mysql_num_fields($fields)
Dbase.php – IV.
A mezőfejléceket a HTML táblázat fejlécébe írjuk ki
Dbase.php – V.
A könyv adatokat egy HTML táblázatként írjuk ki
Dbase-php – VI.
Szabadítsuk fel az erőforrásokat és zárjuk be a kapcsolatot mysql_free_result($result); mysql_close($db_link); ?> </body> </html>
Script hívása gomb kattintásra – I. Adjunk nevet és értéket a nyomógombnak
<input type="submit" name="choice" value="Display">
Ha a form submitálódik, akkor a név index létező lesz if (isset($_REQUEST['choice']) {
// process the button click here } ...
Több submit gomb esetén a neveknek és értékeknek különbözniük kell
Script hívása gomb kattintásra – II. Másik előnye a submit gomb label-
jének (értékének) használatának, hogy meg tudunk különböztetni választási lehetőségeket
Több submit gombnak lehet ugyanaz a neve, de az értékekben különbözniük kell
Script hívása linkben
Egy link alkalmas lehet arra, hogy meghívjunk egy scriptet vele, vagy paramétereket adjunk át a GET metódust használva
Javaslatok weboldal
Felhasználók javaslatokat tehetnek azáltal, hogy egy textarea-t kitöltenek és elküldik
A javaslatok egy MySQL adatbázisban mentődnek el (web_db)
A javaslatok időrendben kerülnek megjelenítésre
Javaslat doboz megjelenés
Sbox.sql
Script logika
IF új javaslat kérelem érkezett THEN Jelenítsük meg az űrlapot
ELSE IF form submitálódott THEN
Szúrjuk be a javaslatot az adatbázisba ENDIF Kérdezzük le a javaslatokat az adatbázistáblából IF létezik javaslat, azaz a lekérdezés nem üres THEN
Jelenítsük meg ELSE
Javaslat táblázat üres ENDIF
ENDIF Kínáljuk fel a linket, hogy a felhasználó tudjon
megadni javaslatokat
Sbox.php – I.
Sbox.php – II.
Sbox.php – III.
Sbox.php – IV.
Más verziók
Létezik: sbox2, sbox3, sbox4 Sbox2 a HTML text értékeket kvótázza,
helyesen kezeli Sbox3-ban hiba ellenőrzés is van Sbox4 az sbox3 egyszerűsített verziója
Form mindig látható Nincs szükség linkre
Sbox4.php – I.
Sbox4.php – II.
Sbox4.php – III.
Sbox4.php – IV.
Köszönöm a figyelmet!