You are on page 1of 40

i H c S Ph m Tp.

H Ch Minh

LP TRNH WEB PHP

Chng 04: K t n i PHP v i MySQL

Ni dung
1. 2. 3. 4. 5. Cc ki u d li u c b n trong MySQL Cc l nh thng d ng trong MySQL K t n i MySQL t PHP Quy trnh k t n i vo MySQL Cc b c truy c p CSDL MySQL

1. Cc ki u d
Ki u
char(length) char(length) varchar(length) varchar(length) text int(length) int(length) decimal(length,dec) decimal(length,dec)

li u c b n trong MySQL
M t
t i a 255 k t , chi u di c nh = length t i a 255 k t , chi u di ng <= length t i a 65536 k t -2.147.483.648 n +2.147.483.647 t i a length ch s trong dec ch s th p phn

1. Cc ki u d li u thng d ng trong MySQL


Ki u
enum(option1, enum(option1, option2,) date time datetime

M t
t p h p t nh, ngha t i a 65.535 gi tr yyyy-mmyyyy-mm-dd hh:mm:ss yyyy-mmyyyy-mm-dd hh:mm:ss

2. Cc l nh thng d ng trong MySQL


Ki u
CREATE ALTER SELECT DELETE DESCRIBE INSERT INTO UPDATE DROP

M t
t o CSDL ho c b ng thay i b ng c s n ch n d li u t b ng xa d li u kh i b ng xem thng tin m t v c u trc b ng ghi gi tr vo b ng c p nh t d li u c trong b ng xa b ng hay ton b CSDL

2. Cc l nh thng d ng trong MySQL


CREATE INDEX indexname ON tablename (column [ASC|DESC], ...); CREATE PROCEDURE procedurename( [parameters] ) BEGIN ... procedurename( [parameters] END; CREATE TABLE tablename ( column datatype [NULL|NOT NULL] column datatype [NULL|NOT NULL] ... );

[CONSTRAINTS], [CONSTRAINTS],

CREATE USER username[@hostname] [IDENTIFIED BY username[@hostname] [PASSWORD] 'password']; 'password']; CREATE [OR REPLACE] VIEW viewname AS SELECT ...;
6

2. Cc l nh thng d ng trong MySQL


ALTER TABLE tablename
(

ADD column datatype [NULL|NOT NULL] [CONSTRAINTS], CHANGE column columns datatype [NULL|NOT NULL] [CONSTRAINTS], DROP column,
... );

2. Cc l nh thng d ng trong MySQL


SELECT columnname, ... columnname, FROM tablename, ... tablename, [WHERE ...] [UNION ...] [GROUP BY ...] [HAVING ...] [ORDER BY ...]; VD: SELECT * FROM ketqua;
8

2. Cc l nh thng d ng trong MySQL DELETE FROM tablename [WHERE ...]; VD: DELETE FROM ketqua WHERE MaSV = K29.103.010

2. Cc l nh thng d ng trong MySQL


INSERT INTO tablename [(columns, ...)] VALUES(values, VALUES(values, ...); INSERT INTO tablename VALUES(value1, VALUES(value1, value2, , valuen); VD: INSERT INTO ketqua (mamon, diem) VALUES (LTWEB, 10); INSERT INTO ketqua VALUES(, K29.103.010, VALUES(, LTWEB, 10);
10

2. Cc l nh thng d ng trong MySQL


UPDATE tablename SET columname = value, ... [WHERE ...]; VD: UPDATE ketqua SET diem = 10 WHERE MaSV = K29.103.010

11

2. Cc l nh thng d ng trong MySQL


DROP DATABASE | INDEX | PROCEDURE | TABLE | TRIGGER | USER | VIEW itemname; VD: Xa b ng SINHVIEN: DROP TABLE SinhVien Xa CSDL QLSV: DROP DATABASE QLSV;

12

Giao ti p dng l nh K t n i mysql server


mysql [-h hostname] [-P portnumber] -u username -p [- hostname] [- portnumber] mysql [-h hostname] [-P portnumber] --user=user ---user=user password=pass password=pass

Nh p l nh sau d u nh c l nh mysql> mysql> M i l nh SQL k t thc b ng d u ;

13

Giao ti p h a M t s cng c thng d ng


SQLyog Enterprise phpMyAdmin MySQL Query Browser MySQL Maestros Navicat MySQL Manager

14

3. K t n i MySQL t
PHP script
Th vi n chu n

PHP

Th vi n c i ti n

mysql
S d ng hm S d ng l p

mysqli
S d ng hm

mysql

mysqli mysqli_stmt mysqli_result

mysqli

15

Th vi n mysql c i ti n trong PHP5 Thi t l p trong php.ini


extension=php_mysqli.dll

u i m
H tr l p trnh h ng i t ng H tr nhn b n v phn tn CSDL Nn v m ha d li u trn k t n i T i u hi u nng v m

16

4. Quy trnh k t n i vo MySQL


1. 2. 3. 4. 5. 6. M k t n i n CSDL Ch n CSDL Ch n b ng m (n u c n) X l CSDL D nd p ng k t n i

17

B c 1: M k t n i n CSDL
// OOP mysqli mysqli('hostname', 'username', $mysqli = new mysqli('hostname', 'username', 'password', 'dbname'); password', 'dbname'); // mysqli $link = mysqli_connect('hostname', mysqli_connect('hostname', 'username', 'password', 'dbname'); username', 'password', 'dbname');

18

B c 2: Ch n CSDL
// OOP mysqli $mysqli->select_db('dbname'); $mysqli->select_db('dbname'); // mysqli mysqli_select_db($link, mysqli_select_db($link, 'dbname');

19

B c 3: Ch n b ng m (n u c n)
// OOP mysqli mysqli->query($link, mysqli->query($link, "SET NAMES character set") character set") // mysqli mysqli_query($link, mysqli_query($link, "SET NAMES character set") character set")

VD: SET NAMES UTF8

20

B c 4: X
Truy v n

l CSDL

// OOP mysqli $result = mysqli->query(query") mysqli->query(query") // mysqli $result = mysqli_query($link, query") mysqli_query($link,

21

B c 4: X
L y d li u t

l CSDL (tt)
truy v n

// OOP mysqli $row = $result->fetch_row() $result$row = $result->fetch_assoc() $result$row = $result->fetch_array(result_type) $result->fetch_array(result_type) // mysqli $row = mysqli_fetch_row($result) mysqli_fetch_row($result) $row = mysqli_fetch_assoc($result) mysqli_fetch_assoc($result) $row = mysqli_fetch_array($result, result_type) mysqli_fetch_array($result, result_type)

22

B c 5: D n d p
// OOP mysqli $result->close() $result->close() // mysqli mysqli_free_result($result) mysqli_free_result($result)

23

B c 6: ng k t n i
// OOP mysqli

$mysqli$mysqli->close()
// mysqli

mysqli_close($link)

24

5. Cc bc truy cp CSDL MySQL


1. 2. 3. 4. 5. T o k t n i n database server L a ch n CSDL Xy d ng truy v n v th c hi n truy v n X l k t qu tr v ng k t n i n server

25

Khai bo s dng CSDL MySQL


Khai bo k t n i CSDL:
<?php $dbhost $dbuser $dbpass $conn = $dbpass) or MySQL'); ?> = localhost; = 'root'; = 'password'; mysqli_connect($dbhost, $dbuser, die (Khng th k t n i CSDL

Ch n Database lm vi c
$dbname =bookstore; mysqli_select_db($dbname);

Gi i phng Database
mysqli_close($conn);
26

Khai bo s dng CSDL MySQL (tt)


Truy v n d li u:
$result = mysqli_query(cu_truy_v n);

Gi i phng ti nguyn truy v n


mysqli_free_result($result );

S d ng k t qu truy v n:
mysqli_fetch_array($result); mysqli_fetch_row($result); mysqli_fetch_assoc($result);

S d ng ti ng vi t:
mysqli_query(SET CHARACTER SET UTF8); Hay mysqli_query(SET NAMES UTF8);
27

Lu
Hm die(Chu i): a ra thng bo v k t thc. V i cch vi t trn, die ch th c hi n khi l nh tr c n khng thnh cng Cc hm c n thi t:
mysqli_affected_rows(): S b n ghi b tc ng b i l nh mysqli_query li n tr c. mysqli_error(): Thng bo l i (n u c) mysqli_errno(): M l i

28

Xem thm
K t n i CSDL MySQL s d ng PDO

PHP Data Objects

29

Cu hnh s dng PDO


Need to enable PDO in your php.ini MUST load PDO first Unix:
extension=pdo.so extension=pdo_XXX.so

Windows
extension=php_pdo.dll extension=php_pdo_XXX.dll

30

Connecting via PDO


try { $dbh = new PDO($dsn, $user, $password, $options); } catch (PDOException $e) { echo Failed to connect: . $e->getMessage(); }

31

DSN format in PDO


Driver:optional_driver_specific_stuff
sqlite:/path/to/db/file sqlite::memory: mysql:host=name;dbname=dbname pgsql:native_pgsql_connection_string oci:dbname=dbname;charset=charset firebird:dbname=dbname;charset=charset;role= role odbc:odbc_dsn

32

Connection management
try { $dbh = new PDO($dsn, $user, $pw); } catch (PDOException $e) { echo connect failed: . $e->getMessage(); } // use the database here // // done; release the connection $dbh = null;

33

Lets get data


$dbh = new PDO($dsn); $stmt = $dbh->prepare( SELECT * FROM FOO); $stmt->execute(); while ($row = $stmt->fetch()) { print_r($row); }

34

Fetch types
$stmt->fetch(PDO_FETCH_BOTH)
Array with numeric and string keys default option

PDO_FETCH_NUM
Array with numeric keys

PDO_FETCH_ASSOC
Array with string keys

PDO_FETCH_OBJ
$obj->name holds the name column from the row

PDO_FETCH_BOUND
Just returns true until there are no more rows

35

Lets change data


$deleted = $dbh->query( DELETE FROM FOO WHERE 1); $changes = $dbh->query( UPDATE FOO SET active=1 . WHERE NAME LIKE %joe%);

36

Smarter Queries
Quoting is annoying, but essential PDO offers a better way $stmt->prepare(INSERT INTO CREDITS (extension, name) VALUES (:extension, :name)); $stmt->execute(array( :extension => xdebug, :name => Derick Rethans ));

37

Binding for output


$stmt = $dbh->prepare( "SELECT extension, name from CREDITS"); if ($stmt->execute()) { $stmt->bindColumn(extension', $extension); $stmt->bindColumn(name', $name); while ($stmt->fetch(PDO_FETCH_BOUND)) { echo Extension: $extension\n; echo Author: $name\n; } }

38

Transactions
try { $dbh->beginTransaction(); $dbh->query(UPDATE ); $dbh->query(UPDATE ); $dbh->commit(); } catch (PDOException $e) { $dbh->rollBack(); }

39

Cu hi v tho lun

40

You might also like