You are on page 1of 27

Biên so n b i: Mr.

C nh Phúc
Hi u tr ng tr ng i h c à N ng
Ch nhi m khoa Công Ngh Thông Tin
Thông tin liên h : canhphuc@yahoo.com và canhphucvn@hotmail.com

Trình bày và hi u ính: Mr. CEO/pcdinh, Ch t ch kh i liên minh quân s B c i Tây D ng NATO

I.PHP là gì?
PHP là m t ngôn ng l p trình ki u script, ch y trên Server và tr v mã HTML cho trình duy t. PHP g n
nh ã tr thành m t ngôn ng l p trình Web r t ph bi n trên m ng hi n nay. PHP là ch vi t t t c a c m t
"PHP Hypertext Preprocessor", t m d ch là ngôn ng ti n x lí các siêu v n b n. Các mã l nh PHP c nhúng
vào các trang web, các trang này th ng có ph n m r ng là .php, .php3, .php4. Khi client g i yêu c u "c n t i
các trang này v " n web server, u tiên web server s phân tích và thi hành các mã l nh PHP c nhúng
trong, sau ó tr v m t trang web k t qu ã c x lí cho client.

B n có th h i, t i sau có nhi u tu! ch n nh ASP, Cold Fusion, Perl, Java, Python nh ng chúng ta l i
ch n PHP? Và câu tr l i là: b i nó là m t ngôn ng r t d" dùng, d" h c, cú pháp l nh n gi n, các bi n không
c n ph i khai báo tr #c khi dùng, t ng ép ki u(typecast), ch y nhanh, t p hàm built-in r t phong phú, có mã
ngu$n m …

II.Các cách làm vi c v i PHP:


Có 4 cách dùng PHP:
i. <? echo ("this is the simplest, an SGML processing instruction\n"); ?>
ii. <?php echo("if you want to serve XML documents, do like this\n"); ?>
iii. <script language="php"> to have a U.
echo ("some editors don't like processing instructions");
</script>
iv. <% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<%echo .." %>

Cách i ch% có th s d ng n u nh ng tag ng n c cho phép s d ng. Có th s a short_open_tag trong


c u hình c a php ho&c biên d ch file .php v#i l a ch n cho phép dùng các tag ng n.
T ng t nh v y, cách th' iv ch% có tác d ng n u asp_tag c &t trong file c u hình c a PHP.

III.Các ki u d li u:
PHP h( tr tám ki u d li u nguyên thu . B n ki u thông th ng là: boolean, integer, floating-point
number(float), string. Hai ki u ph'c t p là: m ng( array) và i t ng ( object). Và cu i cùng là hai ki u &c
bi t : resource và NULL. Lo i d li u c a bi n thông th ng không c gán b i ng i l p trình mà c quy t
nh t i th i gian ch y c a PHP, ph thu c vào ng c nh mà bi n c dùng.

1. Boolean: ây là ki u n gi n nh t. M t ki u boolean bi u th m t giá tr th t. Nó có th là TRUE


hay FALSE.

lktlucky2002@yahoo.com Page 1 of 1
Cú pháp: ch% nh m t giá tr boolean, có th s d ng t khoá TRUE hay là FALSE. C hai u
không phân bi t ch hoa hay ch th ng.
Ví d : $foo=True; // gán giá tr TRUE cho bi n $foo.
có th chuy n m t giá tr sang ki u boolean, chúng ta có th dùng (bool) hay (boolean). Tuy nhiên
trong h u h t các tr ng h p b n không c n ph i s d ng vi c ép ki u này, b i giá tr s ct ng chuy n n u
nó là m t toán t , hàm hay là c u trúc i u khi n òi h i m t tham s ki u boolean.
Chú ý: -1 c xem là TRUE, gi ng nh các giá tr khác 0 khác ( b t k là s d ng hay âm).

2. Integer: là m t t p h p bao g$m các s {...,-2,-1,0,1,2,...}.

Cú pháp: Integer có th c ch% nh trong c s 10, c s th p l c phân hay c s bát phân, tu! ch n i
tr #c b i d u - hay +. N u b n s d ng v#i c s bát phân, b n ph i theo th' t v#i 0 'ng tr #c, còn i v#i s
th p l c phân thì 0x.

Ví d nh sau:

$a = 1234; # s th p phân
$a = -123; # s âm
$a = 0123; # s bát phân
$a = 0x1A; # s th p l c phân

Kích th #c c a ki u d li u này là 32bit, và PHP không h tr ki u unsigned integer. N u b n ch% nh


m t s v t qua biên c a ki u d li u integer, nó s c xem nh ki u float. T ng t nh v y, khi b n th c
hi n m t phép toán mà k t qu tr v là m t s v t qua biên c a ki u integer, thì ki u float s c tr v . Tuy
nhiên, có m t l(i trong PHP mà không ph i bao gi i u này c)ng úng, nó liên quan n các s âm. Ch*ng h n,
khi b n th c hi n -50000* $million, k t qu s là 429496728. Tuy nhiên, khi c hai toán t u là s d ng thì
không có v n gì x y ra.
chuy n m t giá tr sang ki u integer, ta có th dùng toán t ép ki u (int) hay (integer). Tuy nhiên,
trong h u h t các tr ng h p b n không c n ph i dùng toán t ép ki u ó, b i giá tr s ct ng chuy n sang
n u toán t , hàm hay c u trúc i u khi n òi h i m t i s integer.

3. Ki u s th c (floats,doubles,hay real numbers) : có th c ch% nh b+ng cách s d ng m t trong


các cú pháp sau:
$a = 1.234; $a = 1.2e3; $a = 7E-10;
Kích c, c a ki u float tùy thu c vào platform, giá tr l#n nh t là x p x% 1.8e308

4. String: là nh ng chu(i các kí t .Trong PHP,m t kí t c)ng t ng t nh m t byte,do ó có chính xác


256 kí t khác nhau.

Cú pháp: có th khai báo b+ng ba cách khác nhau nh sau:


• D u nháy n: cách d" dàng nh t ch% nh m t chu(i n gi n là óng nó trong m t d u nháy
n.Ví d :echo 'le bao vy';
• D u nháy kép: n u chu(i c óng trong d u nháy kép("),PHP hi u s có thêm các chu(i cho các
kí t &c bi t ..... Ví d : \n;\t;\\;\$;…
• Heredoc: các khác phân nh chu(i là s d ng cú pháp ("<<<"). Ch% nên cung c p m t nh
danh sau <<<, sau ó là chu(i và ti p là cùng tên nh danh óng d u nháy. nh danh dùng óng ph i b t
u b+ng c t u tiên c a dòng. nh danh c dùng ph i có tên gi ng nh trong các quy lu t &t tên bi n trong
PHP.

lktlucky2002@yahoo.com Page 2 of 2
5. M ng : là m t danh sách các ph n t có cùng ki u d li u.M ng có th là m ng m t chi u hay nhi u
chi u.

• M ng m t chi u có ch% m c: là m ng c qu n lý b+ng cách s d ng ch% s d #i ki u integer


bi u th v trí c a giá tr yêu c u.Cú pháp: $name[index1];
Ví d : m t m ng m t chi u có th c t o ra nh sau:

$meat[0]="chicken";
$meat[1]="steak";
$meat[2]="turkey";

N u b n th c thi dòng l nh sau: print $meat[1]; thì trên trình duy t s hi n th dòng sau: steak.
B n c)ng có th s d ng hàm array( ) c a PHP t o ra m t m ng.Ví d :

$meat=array("chicken","steak","turkey");

• M ng m t chi u k t h p: r t thu n l i khi dùng ánh x m t m ng s d ng các t h n là s


d ng các integer, nó giúp ta gi m b#t th i gian và các mã yêu c u hi n th m t giá tr c th . Ví d : b n mu n
ghi l i t t c các th'c n và các c&p r u ngon.

$pairings["zinfandel"] = "Broiled Veal Chops";


$pairings["merlot"] = "Baked Ham";
$pairings["sauvignon"] = "Prime Rib";

M t cách khác là b n có th s d ng hàm array( ) c a PHP t o ra m t m ng lo i này, ví d nh sau:

$pairings = array( zinfandel => "Broiled Veal Chops",


merlot => "Baked Ham",sauvignon => "Prime Rib",
sauternes => "Roasted Salmon";

• M ng nhi u chi u có ch% m c: ch'c n ng c a nó c)ng gi ng nh m ng m t chi u có ch% m c,


ngo i tr vi c nó có thêm m t m ng ch% m c c dùng ch% nh m t ph n t . Cú pháp: $name[index1]
[index2]..[indexN];
M t m ng hai chi u có ch% m c c t o ra nh sau:

$position = $chess_board[5][4];

• M ng a chi u k t h p: khá h u ích trong PHP. Gi s b n mu n ghi l i các c&p r u-th'c n,


không ch% lo i r u, mà c nhà s n xu t. B n có th th c hi n nh sau:

$pairings["Martinelli"] ["zinfandel"] = "Broiled Veal Chops";


$pairings["Beringer"] ["merlot"] = "Baked Ham";
$pairings["Jarvis"] ["sauvignon"] = "Prime Rib";

6. Object: b n có th xem object nh là m t bi n mà minh ho m t ki u m-u template c g i là class.


Khái ni m c a i t ng và l#p c s d ng nhi u trong ngôn ng l p trình h #ng i t ng OOP.
Không gi ng nh các ki u d li u khác trong PHP, object ph i c khai báo. i u quan tr ng là ph i
nh n ra r+ng object không h n gì m t minh ho c a m t l#p, và ho t ng nh là m t khuôn m-u cho
vi c t o các object có các &c tính và ch'c n ng c th . Cho nên, l#p(class) ph i c nh ngh.a
tr #c khi khai báo m t object. kh i t o m t i t ng, b n s dung câu l nh new minh ho i
t ng v#i m t bi n.Ví d :
lktlucky2002@yahoo.com Page 3 of 3
<?php
class foo{
function do_foo(){
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
?>

7. Resource: là m t bi n &c bi t, ch'a m t tham chi u n m t resource bên ngoài. Các resource c
t o ra và s d ng b i các hàm &c bi t.
Gi i phóng resources: b i do tham chi u m c a h th ng c gi#i thi u trong PHP4 Zend-
engine, nó s t ng phát hi n khi m t resource không c n thi t cho lâu dài. Khi trong tr ng h p
này, t t c các resource mà ã c dùng cho resource này c gi i phóng b i "b ph n thu nh&t
rác". Do ó, hi m khi th t s c n thi t gi i phóng b nh# thông th ng b+ng cách s d ng hàm
free_result().

8. NULL: giá tr NULL &c bi t dùng th hi n m t bi n không có giá tr . M t bi n c xem là


NULL n u:
o Nó c gán giá tr h+ng s NULL.
o Nó ch a c kh i t o giá tr nào.
o Nó là hàm unset( )
Chú thích: unset () là m t hàm dùng h y b các bi n ch% nh.
Cú pháp: ch% có m t lo i giá tr c a ki u NULL. B n có th khai báo nh ví d sau:
$var=NULL;

IV.Bi n trong PHP:


Bi n trong PHP c th hi n b i d u dollar $ và theo sau là tên c a bi n. Tên bi n không phân bi t ch
hoa hay ch th ng. Tên bi n ph i b t u b+ng m t ch cái hay m t d u g ch n i_, theo sau là các ch cái, ch
s hay là d u g ch n i. Ví d :

var = "Bob";
$Var = "Joe";
echo "$var, $Var";

Trong PHP3 thì các bi n ph i luôn luôn c gán giá tr . Còn trong PHP4 thì cung c p thêm m t cách
khác gán giá tr cho bi n: gán theo tham chi u. i u này có ngh.a là m t bi n m#i có th tham chi u n m t
bi n nguyên thu/. S thay i c a bi n m#i s tác ng n bi n nguyên thu/ và ng c l i. Nó c)ng có ngh.a là
không có sao chép, do ó vi c k t gán s di"n ra nhanh h n. th c hi n gán b+ng tham chi u, ch% c n thêm &
u tên c a bi n c gán.Ví d sau s in ra dòng 'My name is Bob' hai l n:

<?php
$foo = 'Bob'; // gán giá tr 'Bob' cho $foo
$bar = &$foo; // Tham chi u $foo qua $bar.
$bar = "My name is $bar"; // thay i $bar...
echo $bar;
echo $foo; // $foo c ng b thay i.
?>

Ph m vi c a bi n: Các bi n trong PHP có th là m t trong b n lo i ph m vi sau:

lktlucky2002@yahoo.com Page 4 of 4
Bi n c c b .
Tham s các hàm.
Bi n toàn c c.
Bi n static.

1) Bi n c c b : M t bi n c khai báo trong m t hàm thì c xem nh là m t bi n c c b và


nó ch% c tham chi u trong hàm ó. B t k vi c gán giá tr bên ngoài hàm u xem nh là bi n hoàn toàn
khác v#i bi n trong hàm ó. Chú ý khi thoát kh i hàm mà bi n c c b c khai báo, thì bi n và giá tr c a nó
s b hu/ b . Bi n c c b có thu n l i b i nó lo i b nh ng kh n ng c a các tác ng không d oán c làm
thay i k t qu t các bi n có th truy c p toàn c c.Ví d :

$x = 4;
function assignx () {
$x = 0;
print "\$x inside function is $x. <br>";
}
assignx();
print "\$x outside of function is $x. <br>";

Sau khi th c hi n s có các k t qu nh sau:

$x inside function is 0.
$x outside of function is 4.

2) Tham s c a hàm: c)ng gi ng nh nhi u ngôn ng l p trình khác, trong PHP hàm có ch'a
tham s ph i khai báo các tham s trong ph n u c a hàm. M&c d u, nh ng tham s này nh n các giá tr n t
bên ngoài hàm, nh ng chúng s ch% có th truy c p m t khi hàm t$n t i. Các tham s c a hàm c khai báo sau
tên hàm và bên trong d u {. Ví d :

function x10 ($value) {


$value = $value * 10;
return $value;}

i u quan tr ng c n ph i chú ý là m&c d u b n có th truy c p và thao tác v#i các tham s trong hàm mà
nó c khai báo, nh ng nó s b hu/ b khi hàm k t thúc th c hi n.

3) Bi n toàn c c: ng c l i v#i bi n c c b , bi n toàn c c có th c truy c p t b t c' ph n nào


trong ch ng trình .Tuy nhiên, có th ch%nh s a, bi n toàn c c ph i c khai báo toàn c c trong hàm mà nó
c ch%nh s a. khai báo m t bi n là toàn c c ta &t t khoá GLOBAL phía tr #c.Ví d :

$somevar = 15;
function addit() {
GLOBAL $somevar;
$somevar++;
print "Somevar is $somevar";
}
addit();

K t qu c a $somevar là 16. Tuy nhiên, n u b n b dòng l nh GLOBAL $somevar; thì bi n $somevar s


ch% có giá tr là 1, b i bi n $somevar c xem nh là bi n c c b trong hàm addit( ).
M t cách khác khai báo m t bi n là toàn c c là s d ng m ng $GLOBALS c a PHP. Ví du, khai báo
bi n $somevar là toàn c c b+ng cách s d ng m ng này:

$somevar = 15;
function addit() {
lktlucky2002@yahoo.com Page 5 of 5
$GLOBALS["somevar"];
$somevar++;
}
addit();
print "Somevar is $somevar";

4) Bi n static: t ng ph n v#i các bi n c khai báo trong các tham s c a hàm s b hu/ b khi
thoát kh i hàm, bi n static s không m t giá tr c a nó khi thoát kh i hàm và s gi nguyên giá tr ó khi hàm
c g i l i l n n a. B n có th khai báo m t bi n là static b+ng cách dùng t khoá STATIC &t tr #c tên bi n.
Ví d :
function keep_track() {
STATIC $count = 0;
$count++;
print $count;
print "<br>";
}
keep_track();
keep_track();
keep_track();
K t qu là :
1
2
3
Truy c p bi n t trình duy t:
Khi dùng PHP, c)ng nh các ph n m m trung gian khác, thông tin c cung c p tu! ch n d a vào
tham chi u ng i dùng. D. nhiên thông tin s n thông qua “form”. Thông tin c)ng có th n t nh ng n i
khác, nh “cookie” hay “sessions”.

a.Bi n form:
M t trong nh ng cách ph bi n là chuy n bi n thông qua “form”. M(i thành ph n trong form c a chúng
ta s c gán tên và thu c tính giá tr . Khi form c “submit” thì name=value s c chuy n n PHP. Chúng
ta có th chuy n n PHP b i ph ng pháp GET ho&c POST, tùy thu c chúng ta ch n gì trong thu c tính hành
ng c a “form”. M t khi form c “submit”, nh ng thành ph n c a form s t ng tr thành nh ng bi n toàn
c c trong PHP.
b.Sessions:
PHP c)ng gi ng nh ASP và ColdFusion u h( tr sessions. V y sessions là gì? V c b n nó là m t
cách khác duy trì tr ng thái gi a các trang Web. Chúng ta b t u m t sessions b i hàm start_session(). Khi
ó PHP s ng ký m t session ID duy nh t và g i session ID ó v cho ng i dùng thông qua cookie. PHP s t o
nh ng t p áp tr trên server có th l u gi d u v t c a b t k! bi n nào. Nh ng t p này có cùng tên v#i session
ID.
M t khi session c t o chúng ta có th ng ký b t k! bi n s nào. Giá tr c a nó s c gi trên m t
t p máy ch . Và nh v y trong th i gian s ng c a session nh ng bi n này s c th c hi n b i b t c' trang
nào trong cùng m t tên mi n mà không c n truy c p n chúng.
Tuy nhiên có m t s ng i dùng không cho phép cookie, khi ó PHP gi d u v t các session ID qua các
querystring. Chúng ta có th làm i u này b+ng tay b+ng cách cho sessiong ID ph thu c queryString, ho&c thay
i tu! ch n c u hình. thêm session Id n querystring, ta dùng <?=SID?>. Nó s t ng in ra m t chu(i nh
sau: PHPSESSID=07e935k3kkjr0986s9d89fr9trg8rgrg20
<a href=”mypage.php?<?=SID?>”>Click my Page</a>
o n mã sau s ng ký m t session ID và gán cho nó giá tr là: hello world

<?php
session_start();
session_register(“my_var”);
$my_var=”hello world”;
lktlucky2002@yahoo.com Page 6 of 6
?>

c.Cookies:
Cookies là m t m0u thông tin nh c l u tr trên máy tính ng i dùng. M t cookies ch'a m t o n
v n b n nh có th c b i máy ch Web. Cookies cung c p cách có th gi d u v t ng i s d ng thông qua
m t s d ch v . Chúng ta ph i nh# r+ng Web là môi tr ng tr ng thái. Máy ch Web s không bi t ai yêu c u
thông tin, cookies s giúp chúng ta gi thông tin ng i dùng khi h di chuy n quanh site. Khi h t$n t i , cookies
tr thành m t ph n c a yêu c u HTTP g i n cho máy ch Web. Nh ng tr #c h t chúng ta c n thi t l p m t
cookies. Nh ng ng i phát tri n s làm i u này, gi ng nh m i th' khác trong PHP, chúng r t n gi n. Dùng
hàm setcookie() v#i nh ng tham s theo sau:
setcookie(name, value, time_to_expire, path, domain, security setting);
Vi d :
setcookie(“mycookie”, “my_id”, time()+ (60*60*24*30),”/”,”.mydomain.com”,0)
Cookie này thi t l p nh ng tham s nh sau:
o L u tr tên bi n có tên là mycookie.
o Giá tr c a bi n là my_id.
o cookie có giá tr 30 ngày k t ngày thi t l p.
o cookie có hi u l c trong m i trang c a domain.
o Nó có hi u l c trong m i ch( c a t n mi n mydomain.com
o Không có thi t l p an toàn &c bi t

V.H ng s (Constant):
H+ng là m t giá tr không th ch%nh s a c thông qua vi c th c hi n ch ng trình. B n có th nh
ngh.a m t h+ng b+ng cách dùng hàm define( ). M t khi h+ng c nh ngh.a, nó không bao gi b thay i.
Ch% có các ki u d li u boolean, integer, float, string m#i có th ch'a các h+ng. B n có th nh n giá tr
c a m t h+ng b+ng cách n gi n ch% nh tên c a nó. Không gi ng nh v#i bi n, b n không c n khai báo $ tr #c
m t h+ng. B n c)ng có th dùng hàm constant(), c giá tr c a h+ng. S d ng hàm get_defined_constants( )
nh n m t danh sách t t c các hàm ã c nh ngh.a.
Các h+ng c nh ngh.a tr #c: PHP cung c p m t l ng l#n các h+ng ã c nh ngh.a tr #c b t
k! script nào c)ng có th ch y c.

VI. Toán t :
Toán t là m t ký hi u ch% nh m t ho t ng trong bi u th'c.Các toán t có trong PHP nh sau:

Toán t M c ích
( ) Th c hi n theo yêu c u có th' t .
New Minh ho m t object m#i.
! ~ Phép Not trong Boolean, Not trong Bitwise.
++ -- T ng t ng, t ng gi m
@ Che d u l(i.
/ * % Chia, nhân, chia l y d .
+ - . C ng, tr , n i.
<< >> D ch sang trái, d ch sang ph i trong Bitwise.
So sánh nh h n, nh h n hay b+ng, l#n h n, l#n h n hay
< <= > >=
b+ng.
== != === <> So sánh b+ng, không b+ng, gi ng nhau, khác nhau.
& ^ | Phép AND, OR, XOR trong Bitwise.
&& || Phép AND, OR trong Boolean.

lktlucky2002@yahoo.com Page 7 of 7
?: Toán t tam phân.
= += *= /= .= Các toán t gán.
%=&= |= ^=
AND XOR OR Phép AND, XOR, OR trong Boolean.

Phan4
VII.C u trúc i u khi n:

Các câu l nh i u ki n: các câu l nh này cho phép chúng ta phân bi t các kh i mã l nh mà s c th c thi ch%
khi g&p ph i các i u ki n nào ó. PHP cung c p hai c u trúc l nh i u ki n. u tiên là if...elseif...else, cho phép
chúng ta có th ki m tra m t s l ng các bi u th'c và th c thi các câu l nh theo giá tr c a chúng. N u chúng ta
mong mu n ki m tra m t bi u th'c n l1 v#i m t s l ng các giá tr , PHP c)ng cung c p m t c u trúc
switch...case mà có th làm n gi n hoá i phép toán này.
1) Câu l nh If: Câu l nh If là m t trong nh ng &c tính quan tr ng nh t c a m(i ngôn ng l p trình. Nó
cho phép th c thi ch n l a các dòng mã l nh ch% khi tho mãn các i u ki n c th .Ch*ng h n:

if ($country=="ca")echo ("Canada");//Canada c in ra khi bi n $country là ca

N u nhi u h n m t câu l nh c th c hi n khi thoã mãn i u ki n thì s d ng d u {} ch% ra nh ng


dòng l nh nào là n+m trong kh i if:

//Canada s ch c in n u bi n $country là ca
if ($country=="ca"){
echo("Canada");
echo("Ottawa");
}

i u ki n c ki m tra trong d u {}ph i tr v giá tr Boolean, ho&c là true ho&c là false. C)ng nh b t
k! i u ki n nào mà không c thoã mãn, zero hay là chu(i r(ng (""), các giá tr không c nh ngh.a thì t t
c u tr v giá tr là false. Các i u ki n có th c n i v#i nhau b+ng các toán t logic and (&&), or(||) và
xor.Ví d nh sau:

if (((4 < 5) && (3 > 2)) xor (5 == 5)) echo ("This will not print");

Các i u ki n phân nhánh: N u i u ki n c ki m tra mà tr v false, thì PHP cho phép ta ch% ra m t
kh i l nh khác c n c th c hi n b+ng cách dùng t khoá else. M(i th' trong kh i mã l nh th c thi i u ki n
này c xem nh là m t phân nhánh và m(i nhánh ph i c nh v trong các d u ngo&c n u ch'c nhi u h n
m t dòng l nh.Ví d :

if ($h < 0) {
echo ("Negative");
} else {
echo ("Positive");
}

PHP c)ng cung c p t khoá elseif ki m tra các i u ki n l a ch n n u i u ki n trong câu l nh if là


không úng. M t s câu l nh elseif có th c s d ng v#i câu l nh if. Nhánh else cu i cùng cho phép chúng ta
nh v o n mã mà nên c th c hi n n u c i u ki n if và elseif u không úng.

if ($h < 0) {
echo ("Negative");

lktlucky2002@yahoo.com Page 8 of 8
} elseif ($h == 0) {
echo ("Zero");
} else {
echo ("Positive");
}

Ta c)ng có th ki m tra nh ng i u ki n hoàn toàn khác nhau khi s d ng elseif:


if ($country == "ca") {
// do something ...
} elseif ($position == "h") {
// do something else ...
}
Chú ý: c hai i u ki n trên u là true, nh ng ch% có nhánh l nh th' nh t là c th c hi n.
C)ng có th s d ng các câu l nh if l$ng nhau trong câu l nh if khác.Ví d :
if ($country == "ca") {
if ($position == "h") {
echo ("Human resources positions in Canada.");
} elseif ($position == "a") {
echo ("Accounting positions in Canada.");
}
}
Các câu l nh trên c)ng t ng t nh sau:
if ($country == "ca" && $position == "h") {
echo ("Human resources positions in Canada.");
} elseif ($country == "ca" && $position == "a") {
echo ("Accounting positions in Canada.");
}
PHP c)ng cung c p m t cú pháp l a ch n cho câu l nh if, ó là if....endif.Ví d :
if ($country == "ca"):
echo ("Canada");
elseif ($country == "cr"):
echo ("Costa Rica");
else:
echo ("the United States");
endif;
2) Câu l nh switch: c s d ng khi m t bi n riêng r ang c ki m tra so v#i các giá tr khác.Ví d :
switch ($country) {
case "ca":
echo ("Canada");
break;
case "uk":
echo ("the United Kingdom");
break;
default:
echo ("the United States");
}
Khi câu l nh switch th c hi n ki m tra giá tr c a bi n $country và so sánh nó v#i m(i m t trong các giá
tr trong các m nh case. Khi m t giá tr thích h p c tìm th y, các câu l nh k t h p v#i case c th c hi n
cho n khi g&p câu l nh break. Còn n u không tìm ra c giá tr thích h p nào thì câu l nh default s c
th c hi n. Chú ý r+ng l nh switch trong PHP thì linh ho t h n nhi u so v#i h u h t các ngôn ng khác. Không
gi ng nh C, Java và ngay c JavaScript, các giá tr case c)ng có th là m t trong các lo i vô h #ng, bao g$m t t
c các s ,các chu(i và ngay c các bi n.Ví d :
$val = 6;$a = 5;$b = 6;
switch ($val) {
case $a:
echo ("five");
break;

lktlucky2002@yahoo.com Page 9 of 9
case $b:
echo ("six");
break;
default:
echo ("$val");
}
Các m ng và các it ng ch% là nh ng lo i d li u là không ph i là nh ng nhãn úng c a case trong
PHP.

3). Vòng l p: Các vòng l&p chính là các ph ng ti n c a vi c th c thi m t kh i mã l nh trong m t s l n


cho tr #c hay là cho n khi g&p ph i m t i u ki n nh t nh. PHP có hai lo i vòng l&p: vòng l&p while ki m tra
i u ki n tr #c hay là sau m(i b #c tính l&p i l&p l i và th c hi n l&p l i ch% khi i u ki n là úng. M t ki u l&p
khác là for, trong tr ng h p này, s l ng b #c tính l&p i l&p l i c qui nh tr #c khi l&p l n u và không
th b thay i.
1. Vòng l p while: là câu l nh l&p n gi n nh t. Cú pháp t ng t nh câu l nh if:
while (condition) {
//các câu l nh
}
M t vòng l&p while s ki m tra m t bi u th'c Boolean. N u bi u th'c là false thì o n mã bên trong d u
ngo&c móc s c b qua. Ng c l i, n u có giá tr true thì o n mã bên trong d u ngo&c móc s c th c hi n.
Khi g&p d u } thí i u ki n ki m tra s c th c hi n l i và n u có giá tr là true thì o n mã trong vòng l&p s
c th c hi n l i. i u này s ti p t c cho n khi g&p ph i i u ki n . Chú ý r+ng i u ki n ch% c ki m tra
m(i khi b t u vòng l&p, b i v y ngay khi s chính xác c a i u ki n thay i trong su t o n gi a c a kh i l nh
,thì mã l nh s v-n c th c thi cho n h t. thoát kh i vào th i i m s#m h n,ta có th s d ng l nh break.
Ví d :
$i = 11;
while (--$i) {
if (my_function($i) == "error") {
break; // d ng vòng l p!
}
++$num_bikes;
}
Trong ví d này, n u ta hình dung r+ng hàm my_function không tr v b t kì l(i nào thì vòng l&p s l&p i
l&p l i 10 l n và d ng l i khi bi n $i =0. Còn n u my_function tr v l(i, thì câu l nh break s c th c hi n và
vòng l&p s d ng l i. Có nhi u tr ng h p mà chúng ta mong mu n k t thúc ch% khi s l&p l i hi n th i c a vòng
l&p không ph i là toàn b vòng l&p c a chính nó. t c i u này, ta s d ng l nh continue.Ví d :
$i = 11;
while (--$i) {
if (my_function($i) == "error") {
continue;
}
++$num_bikes;
}
o n mã này c)ng l&p i l&p l i 10 l n n u không có l(i nào c tr v b i hàm my_function. Tuy nhiên
t i lúc này, n u có l(i x y ra, vi c th c hi n s l #t qua s l&p l i k ti p c a vòng l&p, mà không t ng bi n m
$num_bikes.Gi s bi n $i v-n l#n h n 0, vòng l&p s ti p t c nh bình th ng.

2. Vòng l p do...while: vòng l&p này c)ng gi ng nh while, ngo i tr i u ki n c ki m tra t i


cu i m(i vòng l&p, thay vì là u. i u này có ngh.a là vòng l&p s luôn luôn th c hi n ít nh t m t l n. Ví d :
echo ("<SELECT name='num_parts'>\n");
$i = 0;
do {
echo ("\t<OPTION value=$i>$i</OPTION>\n");
} while (++$i < $total_parts);
echo ("</SELECT>\n");

lktlucky2002@yahoo.com Page 10 of 10
V#i o n mã trên, giá tr zero luôn luôn xu t hi n nh là m t tùy ch n trong thành ph n <SELECT>,
ngay c n u bi n $total_parts=0.
Các câu l nh while và do...while th ng c dùng v#i các toán t t ng hay gi m i u khi n khi nào
thì b t u và d ng nh ví d trên. Các bi n th ng c dùng cho m c ích này ôi khi c nh ngh.a nh là
các bi n i u khi n vòng l&p.Thông th ng s d ng các câu l nh while trong vi c c các records t m t truy v n
c s d li u, t các dòng trong m t file hay là t các nhân t trong m t m ng.

3. Vòng l p for: C u trúc c a vòng l&p for là khá ph'c t p h n m&c d u các vòng l&p for th ng
ti n l i h n các vòng l&p while:
for ($i = 1; $i < 11; ++$i) {
echo ("$i <BR> \n"); //In t 1 n 10
}
Câu l nh for ch'a ba bi u th'c bên trong d u ngo&c n c a nó, phân bi t v#i nhau b i d u ch m
ph0y.Bi u th'c th' nh t là m t câu l nh gán kh i t o bi n i u khi n vòng l&p. Câu l nh này c th c thi ch%
m t l n tr #c s l&p l i l n u c a vòng l&p.Bi u th'c th' hai là bi u th'c Boolean mà c th c thi t i u m(i
l n l&p. N u giá tr tr v là true thì vòng l&p s ti p t c th c hi n. N u là false thì vòng l&p k t thúc. Bi u th'c th'
ba là m t câu l nh mà th c thi t i giai o n cu i c a m(i l n l&p c a vòng l&p. Nó th ng c dùng t ng hay
gi m các bi n i u khi n vòng l&p .

VIII.Hàm:
ây là m t trong nh ng thu n l i nh t trong phát tri n 'ng d ng. Các hàm cho phép b n phát tri n vi c s d ng
l i và d" dàng ch%nh s a các thành ph n mà th t s h u ích khi b n phát tri n các 'ng d ng Web t ng t nh
trong quan ni m và ti n ích. Các k t qu c a hàm r t ng n g n, d" hi u và d" c.
V y hàm là gì? Hàm là m t o n các mã l nh v#i m t m c ích c th và ph i c gán m t tên duy
nh t. Tên hàm có th c g i t i b t k! âu trong ch ng trình, cho phép các o n mã th hi n b i tên c a nó
c th c hi n l&p l i khi c n thi t. ây là m t thu n l i b i cùng m t o n mã l nh ch% c vi t m t l n nh ng
có th c ch%nh s a d" dàng khi c n thi t.
T o m t hàm PHP là m t quá trình n gi n. B n có th t o m t hàm t i b t k! n i nào trong ch ng
trình PHP. Tuy nhiên, cho m c ích t ch'c b n có th th y r+ng s thu n l i khi &t t t c các hàm cd nh
s s d ng trong script t i u m(i file script. M t ph ng th'c khác cho vi c t ch'c hàm mà có th gi m i s
d th a áng k và t ng vi c s d ng l i là &t các hàm trong nh ng file riêng r ( c xem nh là m t th vi n).
i u này là thu n l i b i b n có th dùng các hàm l&p i l&p l i trong nh ng 'ng d ng khác nhau mà không t o ra
các vi c copy d th a và do ó gi m b#t các nguy c gây l(i do vi c vi t l i.
M t hàm th ng bao g$m ba ph n phân bi t:
• Tên c a hàm.
• C&p d u ngo&c ( ) ch'a các tham s tu! ch n nh p vào.
• Ph n thân c a hàm,n+m trong c&p d u { }.
Ví d khai báo m t hàm sau:
function display_copyright($site_name) {
print "Copyright &copy 2000 $site_name. All Rights Reserved.";
}
Các hàm l ng nhau: Các hàm có th l$ng nhau. i u này th t s h u ích cho các ch ng trình l#n và
nh , khi nó thêm vào m t m'c modul hoá khác vào trong 'ng d ng, k t qu s t ng lên áng k trong vi c
qu n lý mã.
Quay l i v#i ví d display_copyright trên, b n có th gi#i h n nhu c u ch%nh s a ngày tháng cùng v#i
vi c dùng m t hàm l$ng nh ngh.a tr #c c a PHP trong hàm display_copyright():
function display_copyright($site_name) {
print "Copyright &copy". date("Y"). " $site_name. All Rights Reserved.";
}
B n c)ng có th l$ng các khai báo hàm trong m t hàm khác. Tuy nhiên, vi c l$ng m t khai báo hàm
không ng ý r+ng nó s c b o v trong ph m vi gi#i h n mà nó c khai báo. H n th n a, m t hàm c
lktlucky2002@yahoo.com Page 11 of 11
l$ng vào không th a k các tham s nh p vào c a "cha m2" nó, các tham s ph i c chuy n sang hàm c
l$ng ch% khi chúng c chuy n sang hàm khác. Tuy nhiên, vi c l$ng các khai báo hàm là th t s h u ích cho các
lý do qu n lý mã và m b o s rõ ràng c a t ch'c mã.
Ví d :
function display_footer($site_name) {
function display_copyright($site_name) {
print "Copyright &copy ". date("Y"). " $site_name. All
Rights Reserved.";
}
print "<center>
<a href = \"\">home</a> | <a href = \"\">recipes</a> | <a href =
\"\">events</a><br>
<a href = \"\">tutorials</a> | <a href = \"\">about</a> | <a href =
\"\">contact us</a><br>";
display_copyright($site_name);
print "</center>";
}
$site_name = "PHP Recipes";
display_footer($site_name);
Sau khi th c hi n, o n script trên s cho k t qu nh sau:

home | recipes | events


tutorials | about | contact us
Các hàm l$ng nhau trong PHP không c b o v b i vi c c g i t b t k! o n script nào trong
ch ng trình, nh ng chúng không th c g i l i cho n sau khi các hàm cha m2 c g i. Vi c g i th m t
hàm l$ng tr #c khi g i hàm cha m2 c a nó s sinh ra m t thông báo l(i.

Các giá tr tr v t m t hàm: Vi c tr v m t giá tr t hàm là r t h u ích, nó c th c hi n b+ng cách


gán giá tr g i hàm cho m t bi n. B t k! ki u d li u nào c)ng c tr v t m t hàm bao g$m c ki u m ng và
danh sách.
Ví d : xây d ng m t hàm tính thu bán hàng
$price = 24.99;
$tax = .06;
function calculate_cost($tax, $price) {
$sales_tax = $tax;
return $price + ($price * $sales_tax);
}
// chú ý cách calculate_cost() tr l i m t giá tr
$total_cost = calculate_cost ($tax, $price);
// làm tròn bi n $total_cost có 2 d u ch m th p phân.
$total_cost = round($total_cost, 2);
print "Total cost: ".$total_cost;
// $total_cost = 26.49

Hàm quy: Ho t ng c a m t hàm g i l i b n thân chính nó nhi u l n tho mãn m t vài phép toán
th t s là m t s'c m nh. N u c s d ng m t cách úng n, các vi c g i hàm quy có th ti t ki m c
kho ng tr ng không áng và d th a trong m t script và &c bi t h u ích cho vi c th c hi n các th t c l&p i l&p
l i.
Ví d s d ng m t hàm l&p quy tính m t t p h p các s integer.
function summation ($count) {
if ($count != 0) :
return $count + summation($count− 1);
endif;
}
$sum = summation(10);
print "Summation = $sum";

lktlucky2002@yahoo.com Page 12 of 12
K t qu c a o n mã trên s là Summation=55
S d ng hàm quy có th c i thi n t c trong m t ch ng trình n u hàm cg i th ng
xuyên.Tuy nhiên,ph i c0n th n khi vi t các th t c quy ,n u mã không úng s d-n n vi c l&p không d ng
c.
Các hàm có th thay i: Kh n ng thú v c a PHP là có th th c hi n các hàm có th bi n i c. M t
hàm có kh n ng thay i là m t l i g i " ng" n hàm mà tên c a nó c xác nh t i th i i m th c thi. M&c
d u không th t s c n thi t trong h u h t các 'ng d ng Web, nh ng các hàm có th thay i có th gi m kích
th #c mã và ph'c t p m t cách áng k , thông th ng lo i b các câu l nh i u ki n if không c n thi t.
Ta có th g i hàm có th thay i c b+ng cách g i tên m t bi n theo sau là t p các d u ngo&c n( ).
Trong d u ngo&c n ó là t p các tham s tu! ch n nh p vào. Hình th'c thông th ng c a m t hàm có th thay
i nh sau: $function_name();
Ví d :s d ng hàm có th thay i xác nh các bi n nh p vào.
//thông i p chào ti ng Italia
function italian() {
print "Benvenuti al PHP Recipes.";
}
// thông i p chào ti ng Anh
function english() {
print "Welcome to PHP Recipes.";
}
// gán ngôn ng dùng là ti ng Italia
$language = "italian";
//th c thi hàm có th thay i c.
$language();
Xây d ng các th vi n hàm: Các th vi n hàm là m t trong nh ng cách h u ích ti t ki m th i gian khi
xây d ng các 'ng d ng. Ví d , b n có th vi t m t lo t các hàm cho vi c s p x p các m ng. B n có th s d ng
l i các hàm này trong các 'ng d ng khác nhau. H n là vi c th ng xuyên vi t l i hay copy và dán các hàm này
vào các script m#i, nó th t s ti n l i khi &t t t c các hàm liên quan n vi c s p x p trong cùng m t file phân
bi t. File này s ch'a các tiêu d" dàng nh n ra,ch*ng h n nh array_sorting.inc. Ví d nh sau:
<?
// file: array_sorting.inc
// purpose:th vi n ch a các hàm dùng cho vi c s p x p
function merge_sort($array, $tmparray, $right, $left) {
. . .}
function bubble_sort($array, $n) {
. . .}
function quick_sort($array, $right, $left) {
. . .}
?>
Hàm th vi n array_sorting.inc này s ho t ng nh là m t ch( ch'a cho t t c các hàm s p x p m ng.
i u này th t s h u ích b i b n có th t ch'c các hàm m t cách hi u qu theo m c ích cho phép d" dàng tìm
ki m khi c n thi t. M t khi b n xây d ng cho chính mình m t th vi n hàm, b n có th s d ng các câu l nh
include() và require() c a PHP ch'a toàn b các file th vi n vào trong m t script do ó làm cho t t c các
hàm u có s n. Cú pháp chung c a hai câu l nh này nh sau:
include(path/filename);
require(path/filename);
hay c)ng có th nh sau:
include "path/filename";
require "path/filename";
"path": ng d-n tuy t i hay t ng i c a filename.
Gi s b n mu n dùng th vi n array_sorting.inc trong m t script.B n có th d" dàng th c hi n nh
sau:
include ("array_sorting.inc");
Bây gi thì b n có th d" dàng s d ng b t k! hàm nào trong array_sorting.inc
$some_array = (50, 42, 35, 46);

lktlucky2002@yahoo.com Page 13 of 13
//s d ng ph ng pháp s p x p bubble_sort( )
$sorted_array = bubble_sort($some_array, 1);

IX.Classes và Objects

1. Class: là m t t p h p các bi n và các hàm cùng làm vi c v#i các bi n này. M t class c nh
ngh.a theo cú pháp sau:
<?php
class Cart
{
var $items; // Items in our shopping cart
function add_item ($artnr, $num)
{
$this->items[$artnr] += $num;
}
function remove_item ($artnr, $num)
{
if ($this->items[$artnr] > $num) {
$this->items[$artnr] -= $num;
return true;
} else {
return false;
}
}
}
?>
Ví d trên nh ngh.a m t class có tên là Cart, ch'a các m ng k t h p c a các article trong m t cart và hai
hàm dùng thêm và b các th' ra kh i cart này.
Chú ý: trong PHP 4, ch% có các h+ng c kh i t o cho các bi n var m#i c cho phép kh i t o các
bi n v#i các giá tr không ph i là h+ng s , b n c n có m t hàm kh i t o c g i m t cách t ng khi object
c d ng t l#p. Ch*ng h n nh hàm c g i trong m t hàm d ng nh sau:

<?php
class Cart
{
var $todays_date = date("Y-m-d");
var $name = $firstname;
var $owner = 'Fred ' . 'Jones';
var $items = array("VCR", "TV");
}
class Cart
{
var $todays_date;
var $name;
var $owner;
var $items;
function Cart()
{
$this->todays_date = date("Y-m-d");
$this->name = $GLOBALS['firstname'];
/* etc. . . */
}
}
?>
lktlucky2002@yahoo.com Page 14 of 14
2. extends: th ng thì b n c n các l#p v#i các bi n và các hàm t ng t cho m t l#p t$n t i khác.
Th c t , r t t t khi b n nh ngh.a m t l#p chung mà c s d ng trong các $ án c a b n và ch%nh s a l#p này
cho thích nghi v#i nhu c u c a m(i $ án. th c hi n i u này, các class có th c m r ng t các class
khác.Vi c m r ng hay d-n xu t m t l#p có t t c các bi n và các hàm c a l#p cha ( i u này c xem là th a
k ) và nh ng gì b n thêm vào trong nh ngh.a m r ng. Không gi ng nh các ngôn ng l p trình h #ng i
t ng khác, PHP không h( tr a th a k , cho nên m t l#p m r ng ch% luôn luôn ph thu c vào m t l#p cha
riêng r1 c a nó. Các l#p c m r ng s s d ng t khoá extends. Ví d :
class Named_Cart extends Cart{
var $owner;
function set_owner ($name){
$this->owner = $name;
}
}
Ví d trên nh ngh.a m t l#p Named_Cart mà có t t c các bi n và các hàm c a l#p Cart thêm và c ng
thêm các bi n $owener và hàm set_owner().

3. Hàm d ng: là nh ng hàm trong m t l#p mà ct ng g i khi b n t o ra m t minh ho m#i c a


m t l#p v#i t khoá new. Trong PHP4, m t l#p c xem là hàm d ng khi nó có cùng tên v#i tên l#p mà nó c
nh ngh.a trong ó.Ví d :
class Auto_Cart extends Cart
{
function Auto_Cart()
{
$this->add_item ("10", 1);
}
}
Ví d trên nh ngh.a m t l#p Auto_Cart mà m t Cart có m t hàm d ng kh i t o m(i khi m t Auto_Cart
m#i c g i b+ng t khoá new.
Các hàm d ng có th có các i s và các i s này có th là tu! ch n. s d ng l#p mà không có
tham s , t t c các tham s n hàm d ng nên là tu! ch n b+ng cách cung c p các giá tr m&c nh. Ví d nh sau:
class Constructor_Cart extends Car{
function Constructor_Cart($item = "10", $num = 1){
$this->add_item ($item, $num);
}
}
// Shop the same old boring stuff.
$default_cart = new Constructor_Cart;
// Shop for real...
$different_cart = new Constructor_Cart("20", 17);
Chú ý: trong PHP4 khi m t l#p không có hàm d ng thì hàm d ng c a l#p cha s c g i n u nó t$n
t i.Ví d :
class A
{
function A(){
echo "I am the constructor of A.<br>\n";
}
function B() {
echo "I am a regular function named B in class A.<br>\n";
echo "I am not a constructor in A.<br>\n";
}
}
class B extends A{
function C() {
echo "I am a regular function.<br>\n";
}
}

lktlucky2002@yahoo.com Page 15 of 15
// g i B() nh là m t hàm d ng
$b = new B;

lktlucky2002@yahoo.com Page 16 of 16
I. T i sao l i s d ng MySQL?

N u b n ang tìm ki m m t h th ng qu n lý c s d li u mi"n phí hay là không t ti n, m t vài th' có


s n b n ch n nh : MySQL, mSQL, Postgres. Khi b n so sánh MySQL v#i các h th ng c s d li u khác,
hãy ngh. v nh ng gì quan tr ng nh t i v#i b n. S th c thi, s h( tr , các &c tính, các i u ki n và các gi#i
h n c a b n quy n, giá c c a t t c các nhân t có th th c hi n. V#i nh ng lí do ó, MySQL có nhi u &c
i m cu n hút:
• T c : MySQL r t nhanh. Nh ng nhà phát tri n cho r+ng MySQL là c s d li u nhanh nh t mà
b n có th có.
• D" s d ng: MySQL tuy có tính n ng cao nh ng th c s là m t h th ng c s d li u r t n
gi n và ít ph'c t p khi cài &t và qu n tr h n các h th ng l#n .
• Giá thành: MySQL là mi"n phí cho h u h t các vi c s d ng trong m t t ch'c.
• H( tr ngôn ng truy v n: MySQL hi u SQL, là ngôn ng c a s ch n l a cho t t c các h th ng
c s d li u hi n i. B n c)ng có th truy c p MySQL b+ng cách s d ng các 'ng d ng mà h( tr ODBC
(Open Database Connectivity -m t giao th'c giao ti p c s d li u c phát tri n b i Microsoft).
• N ng l c: Nhi u client có th truy c p n server trong cùng m t th i gian. Các client có th s
d ng nhi u c s d li u m t cách $ng th i. B n có th truy c p MySQL t ng tác v#i s d ng m t vài giao
di n b n có th a vào các truy v n và xem các k t qu : các dòng yêu c u c a khách hàng, các trình duy t
Web...
• K t n i và b o m t: MySQL c n i m ng m t cách y , các c s d li u có th c truy
c p t b t k! n i nào trên Internet do ó b n có th chia s d li u c a b n v#i b t k! ai, b t k! n i nào. Nh ng
MySQL ki m soát quy n truy c p cho nên ng i mà không nên nhìn th y d li u c a b n thì không th nhìn
c.
• Tính linh ng: MySQL ch y trên nhi u h th ng UNIX c)ng nh không ph i UNIX ch*ng h n
nh Windows hay OS/2. MySQL ch y c các v#i m i ph n c'ng t các máy PC nhà cho n các máy
server.
• S phân ph i r ng: MySQL r t d" dàng t c, ch% c n s d ng trình duy t web c a b n. N u
b n không hi u làm th nào mà nó làm vi c hay tò mò v thu t toán, b n có th l y mã ngu$n và tìm tòi nó. N u
b n không thích m t vài cái, b n có th thay i nó.
• S h( tr : B n có th tìm th y các tài nguyên có s n mà MySQL h( tr . C ng $ng MySQL r t có
trách nhi m. H tr l i các câu h i trên mailing list th ng ch% trong vài phút. Khi l(i c phát hi n, các nhà
phát tri n s a ra cách kh c ph c trong vài ngày, th m chí có khi trong vài gi và cách kh c ph c ó s ngay
l p t'c có s n trên Internet.

II. T o c s d li u và ng i dùng:

C s d li u MySQL có th h( tr cho nhi u c s d li u khác.Thông th ng b n s có m t c s d li u cho


m(i 'ng d ng.
T o c s d li u: ây là ph n d" nh t. T i d u nh c c a dòng l nh MySQL, ánh :
mysql> creat database dbname;
dbname: chính là tên c a c s d li u b n mu n t o.

lktlucky2002@yahoo.com Page 17 of 17
Khi b n th y m t ph n h$i gi ng nh sau: Query OK,1 row affected (0.06 sec). i u này ch'ng t b n ã
thành công trong vi c t o c s d li u, n u không có ph n h$i thì b n xem l i ã ánh ; cu i dòng ch a. D u ;
b o MySQL r+ng b n ã hoàn thành và yêu c u nó hãy th c hi n chính xác câu l nh.
Các ng i dùng và các quy n: M t h th ng MySQL có nhi u ng i dùng, vì lí do b o m t cho nên v#i m(i
ng i dùng c a h th ng c n ph i có m t account và password. i u này không có ngh.a là b n ph i b t bu c
ph i t o ra password cho ng i dùng, nh ng i u nên làm là cung c p các password cho t t c nh ng ng i dùng
mà b n ã t o ra.
Các quy n h th ng c a MySQL: M t trong nh ng &c tính t t nh t c a MySQL là nó h( tr t t c các quy n
ph'c t p c a h th ng. Khi b n t o ra m t ng i dùng trong MySQL, b n trao quy n cho ng i ó nh rõ
nh ng gì ng i ó có th và không th i v#i h th ng.
T o ng i dùng: s d ng l nh GRANT
Các l nh GRANT và REVOKE c dùng trao và l y quy n n ng i dùng MySQL v#i b n c p
b c phân quy n nh sau:Global, Database, Table, Column
L nh GRANT: t o ng i dùng và giao quy n cho h .C u trúc nh sau:
GRANT privileges [columns]
ON item
TO user_name [IDENTIFIED By 'password']
[WITH GRANT OPTION]
L nh REVOKE: trái ng c v#i GRANT.Nó dùng thu h$i l i các quy n c a ng i dùng, và có c u
trúc t ng t nh GRANT
REVOKE privileges [(columns)]
ON item
FROM user_name
T o b ng c s d li u: s d ng l nh CREAT TABLE, cú pháp thông th ng là:
CREAT TABLE tablename(columns)
Ví d , t o m t b ng customers nh sau:
create table customers(customerid int unsigned not null auto_increment primary key,name
char(30) not null,address char(40) not null,city char(20) not null);
Xem d li u v i l nh SHOW và DESCRIBE: Sau khi ng nh p vào màn hình MySQL, b n có th xem các b ng
trong c s d li u b+ng cách ánh vào nh sau:
mysql> show tables;
Thì MySQL s hi n th t t c các b ng trong c s d li u.
B n c)ng có th s d ng show xem danh sách các c s d li u b+ng cách ánh vào nh sau:
mysql>show databases;
xem thêm các chi ti t v m t b ng c th b n s d ng l nh DESCRIBE:
mysql> describe tablename;

II. Làm vi c v i c s d li u MySQL:

SQL (Structured Query Language): ây là ngôn ng chu0n nh t cho vi c truy c p h th ng qu n lý c s d


li u quan h . SQL dùng ch'a và truy xu t d li u t m t c s d li u. Nó th ng c dùng trong các h
th ng c s, d li u nh MySQL, Oracle, Sybase, PostgreSQL và Microsoft SQL Server...
Chèn d li u vào trong c s d li u: Tr #c khi b n có th làm nhi u vi c v#i c s d li u, b n c n ch'a m t ít
d li u trong nó. th c hi n c i u này b n có th s d ng câu l nh SQL INSERT. Cú pháp nh sau:

INSERT [INTO] table


[(column1,column2,column3,...)]VALUES(value1,value2,value3,...);

Ví d , chèn m t b n ghi vào trong b ng Customers, b n th c hi n nh sau:

lktlucky2002@yahoo.com Page 18 of 18
insert into customers values(NULL,"le bao vy","phan chau trinh","DH Ky
Thuat");

Truy xu t d li u t c s d li u: S d ng câu l nh SELECT truy xu t d li u t m t c s d li u b+ng cách


ch n các hàng tho mãn i u ki n c th nào ó t m t b ng. Có r t nhi u tu! ch n và cách khác nhau s d ng
l nh SELECT.

Câu l nh c n b n c a SELECT là:


SELECT items
FROM tables
[WHERE condition]
[GROUP BY group_type]
[HAVING where_definition]
[ORDER BY order_type]
[LIMIT limit_criteria];

Truy xu t d li u v i i u ki n c th : có th truy c p m t t p h p con c a các hàng trong m t b ng, chúng ta


c n ph i xác nh m t vài i u ki n có ch n l a. B n có th làm c i u này v#i m nh WHERE.Ví d :
select *
from orders
where customerid=3;
i u này $ng ngh.a v#i vi c l a ch n t t c các c t t b ng orders, nh ng ch% có nh ng dòng mà có
customerid=3 thì m#i tho mãn.

Truy xu t d li u t nhi u b ng: Thông th ng tr l i m t câu h i t c s d li u, b n có th c n ph i dùng


d li u t nhi u h n m t b ng. k t h p các thông tin này l i v#i nhau trong SQL, b n ph i th c hi n m t phép
toán g i là k t h p(join). Có ngh.a là nó s k t h p hai hay nhi u b ng l i v#i nhau theo các m i quan h gi a các
d li u.
Ví d n i hai b ng n gi n sau:
select orders.orderid,orders.amount,orders.date
from customers,orders
where customers.name='le bao vy'
and customers.customerid=orders.customerid;

K t n i nhi u h n hai b ng: Ph'c t p h n k t n i hai b ng l i v#i nhau.Theo lu t thông th ng, b n c n n i các
b ng t ng c&p v#i nhau v#i các i u ki n n i.Ví d nh sau:

select customers.name
from customers,orders,order_items
where customers.customerid=orders.customerid
and orders.orderid=order_items.orderid
and order_items.isbn=books.isbn
and books.title like '%Java%';

S d ng tên khác cho b ng (tên hi u-alias): Thông th ng chúng ta truy c p n tên c a các b ng b+ng các tên
hi u c a chúng. B n có th t o ra các tên hi u này khi b t u câu truy v n và sau ó s d ng thông qua chúng.Ví
d :
select c.name
from customers as c,orders as o,order_items as oi,books as b
where c.customerid=o.customerid
and o.orderid=oi.orderid
and oi.isbn=b.isbn
lktlucky2002@yahoo.com Page 19 of 19
and b.title like '%java%';
Nh khi b n khai báo các b ng chúng ta s dùng, chúng ta thêm m t m nh AS khai báo các tên hi u
cho b ng. Chúng ta c)ng có th dùng các tên hi u cho các c t. Vi c này th t s c n thi t khi chúng ta mu n k t
n i m t b ng v#i chính b n thân nó. i u này nghe có v1 h i khó nghe, nh ng nó th t s là h u ích, ch*ng h n
n u chúng ta mu n tìm các hàng trong cùng m t b ng mà có cùng giá tr , n u chúng ta mu n tìm các khách hàng
s ng trong cùng m t thành ph , chúng ta có th &t các tên khác nhau cho cùng m t b ng Customers.Ví d :

select c1.name,c2.name,c1.city
from customers as c1,customers as c2
where c1.city=c2.city
and c1.name!=c2.name;

Nh ng gì mà chúng ta làm là gi v nh b ng Customers là hai b ng khác nhau c1 và c2, sau ó th c hi n


vi c k t n i trên c t City.

Truy xu t d li u theo th th yêu c u: Khi b n mu n hi n th các hàng c truy xu t b+ng m t truy v n theo
m t th' th yêu c u, b n có th s d ng m nh ORDER BY c a câu l nh SELECT. M nh này s s p x p
các hàng c a m t hay nhi u c t c li t kê trong m nh SELECT. Ví d :

select name,address
from customers
order by name;

Giá tr yêu c u m&c nh là t ng d n và b n có th ch% rõ nó n u b n thích dùng t khoá ASC.Ví d :

select name,address
from customers
order by name asc;

Còn n u mu n s p x p gi m d n thì dùng t khoá DESC.


Nhóm và k t h p d li u: Các hàm k t n i có th c áp d ng n m t b ng c)ng nh n toàn b hay n các
nhóm d li u trong m t b ng là:
Tên Mô t
AVG(column) Giá tr trung bình c a các giá tr trong các c t c th .
N u b n ch% ra m t c t thì nó tr v s các giá tr c a c t ó.N u thêm vào
COUNT(items) t khoá DISTINCT phía tr #c tên c t,thì tr v các giá tr riêng bi t c a
c t ó.Còn n u ch% nh là COUNT(*),nó s m t t c các giá tr trong
hàng b t k giá tr r(ng.
MIN(column) Các giá tr nh nh t trong c t ch% nh.
MAX(column) Các giá tr l#n nh t trong c t ch% nh.
STD(column) chênh l ch chu0n c a các giá tr trong c t ch% nh.
STDDEV(column) T ng t nh STD(column).
SUM(column) T ng các giá tr trong c t ch% nh.

Ch n hàng nào s c quay tr v : M t m nh c a câu l nh SELECT mà có th c s d ng m t cách &c


bi t trong các 'ng d ng Web ó là m nh LIMIT. Nó c dùng ch% nh các dòng nào t nh p vào nên
c tr l i. Nó g$m có hai tham s : s hàng b t u và s l ng các hàng s c tr l i.Ví d minh ho :

select name
from customers
limit 2,3;

lktlucky2002@yahoo.com Page 20 of 20
Câu truy v n này có th c hi u nh sau: ch n tên t b ng customers và sau ó tr l i 3 hàng b t ut
hàng th' hai c a nh p vào.

C p nh t các b n ghi trong c s d li u: S d ng câu l nh UPDATE. C u trúc thông d ng c a nó nh sau:

UPDATE tablename
SET column1=expression1,column2=expression2,...
[WHERE condition]
[LIMIT number]

Ví d , chúng ta mu n t ng giá t t c các quy n sách lên 10%, chúng ta s s d ng câu l nh UPDATE nh
sau:
update books
set price=price*1.1;

Thay i các b ng sau khi t o: Chúng ta có th thay i c u trúc c a các b ng trong c s d li u b+ng cách s
d ng câu l nh ALTER TABLE. C u trúc c n b n c a nó nh sau:

ALTER TABLE tablename alteration [,alteration...]

Ví d : trong b ng Customers, chúng ta cho phép tên dài 30 kí t , sau khi chúng ta b t u t o m t s d
li u, chúng ta có th phát hi n r+ng m t s tên là quá dài và ang b c t, chúng ta có th s a i u này b+ng cách
thay i lo i d li u c a c t nó có th dài n 45 kí t .

alter table customers


modify name char(45) not null;

Hu b các records kh i c s d li u: S d ng câu l nh DELETE, c u trúc nh sau:

DELETE FROM table


[WHERE condition]
Ví d :
delete from customers
where customerid=5;

Chú ý:n u b n vi t DELETE FROM table; thì t t c các hàng trong b ng s b hu/ b .
Hu các b ng: B n có th hu/ toàn b m t b ng b+ng cách s d ng câu l nh DROP TABLE. C u trúc này r t
n gi n, nó nh sau:

DROP TABLE table;

Hu toàn b c s d li u: B n có th th c hi n i u này b+ng cách s d ng câu l nh DROP DATABASE, c u


trúc nh sau:

DROP DATABASE database;

T o và hu Index: Index là nh ng ph ng ti n quan tr ng t ng t c truy c p các n i dung c a các b ng,


thông th ng là dùng cho các câu truy v n mà liên quan n k t n i nhi u b ng v#i nhau. MySQL cho phép b n
t o ra index m t cách khá linh ho t. B n có th index các c t riêng r hay k t n i các c t l i v#i nhau. B n c)ng
có th có nhi u h n m t index trong m t b ng n u b n mu n có th tra c'u giá tr m t cách nhanh chóng t các
c t khác nhau c a m t b ng.
T o Index: B n có th t o index cho m t b ng m#i khi b n dùng CREAT TABLE, ho&c có th thêm index cho
các b ng ang t$n t i v#i CREAT INDEX hay ALTER TABLE. B n ph i ch% nh r+ng index có th hay không
lktlucky2002@yahoo.com Page 21 of 21
th ch'a giá tr l&p l i. N u nó không th , index nên c t o nh là m t khoá chính (PRIMARY KEY) hay là
m t index duy nh t (UNIQUE INDEX). thêm m t index cho m t b ng ang t$n t i, b n có th s d ng
ALTER TABLE hay CREAT INDEX. Trong ó l nh ALTER TABLE linh ho t h n b i b n có th s d ng nó
t o ra m t index thông th ng, m t index duy nh t, hay m t khoá chính. Cú pháp nh sau:

alter table tablename add index indexname(column_list)


alter table tablename add unique indexname(column_list)
alter table tablename add primary key(column_list)

CREAT INDEX có th thêm m t index thông th ng hay m t index duy nh t cho m t b ng:

creat unique index index_name on tablename(column_list)


creat index index_name on tablename(column_list)

t o m t index cho m t b ng m#i khi b n s d ng câu l nh CREAT TABLE, b n có th s d ng cú


pháp t ng t nh ã làm v#i ALTER TABLE, nh ng b n ph i ch% nh các m nh t o index trong ph n câu
l nh CREAT TABLE. C th nh sau:
creat table tablename(
......
index index_name(column_list),
unique index_name(column_list),
primary key (column_list),
...
)
H y b Index: B n có th hu/ b index b+ng cách s d ng m t trong hai câu l nh DROP INDEX hay ALTER
TABLE. Cú pháp nh sau:

DROP INDEX index_name on table_name


ALTER TABLE table_name DROP INDEX index_name
ALTER TABLE table_name DROP PRIMARY KEY

Chú ý:Index có th b tác ng n u b n hu/ các c t trong m t b ng.

III. Các hàm PHP s d ng truy c p c s d li u MySQL


• int mysql_affected_rows( [resource link_identifier]): tr v s l ng các hàng b tác ng b i các câu truy
v n cu i cùng INSERT, UPDATE hay DELETE k t h p v#i nh danh liên k t (link_identifier). N u nh n
d ng liên k t không c th thì liên k t cu i cùng c m ra b i mysql_connect( ). Chú ý khi b n ang s d ng
các giao d ch, b n ph i g i mysql_affected_rows( ) sau truy v n INSERT, UPDATE hay DELETE.
• int mysql_character_set_name ( [resource link_identifier]):tr v ký t m&c nh gán tên cho k t n i hi n
hành.
• bool mysql_close ( [resource link_identifier]): tr v TRUE n u thành công, FALSE n u th t b i. Hàm này
óng k t n i n MySQL server mà k t h p v#i nh n d ng liên k t nh rõ, n u link_identifier không nh rõ thì
liên k t m cu i cùng s c s d ng. Vi c s d ng hàm này không ph i lúc nào c)ng c n thi t, nh i v#i
các liên k t m không liên t c thì nó s t ng óng khi k t thúc s th c thi c a script. Chú ý hàm này không
óng k t n i liên t c c t o b i hàm mysql_pconnect( ).
• resource mysql_connect ( [string server [, string username [, string password [, bool new_link]]]]): tr v
m t nh danh liên k t MySQL khi thành công, còn không tr v giá tr FALSE. Hàm này thi t l p m t k t n i
n MySQL server. Nh ng giá tr m&c nh sau c dùng cho các tham s tùy ch n không khai báo:
server='localhost:3306', username=tên c a ng i s d ng là ch c a server và password= b tr ng. N u l i g i
lktlucky2002@yahoo.com Page 22 of 22
l n th' hai c t o b i mysql_connect( ) v#i cùng các tham s mà không có liên k t m#i nào c thi t
l p,nh ng thay vào ó m t liên k t nh danh c a c ng ang cm s c tr v . Tham s new_link mô t
hành vi này và làm cho hàm mysql_connect( ) luôn m m t liên k t m#i, ngay c khi n u hàm mysql_connect( )
b g i tr #c v#i cùng các tham s . Liên k t n server s b óng ngay khi vi c th c thi c a script k t thúc,tr khi
nó b óng s#m h n b i hàm g i mysql_close( ).
• bool mysql_create_db ( string database name [, resource link_identifier]): t o m t c s d li u m#i trên
server k t h p v#i liên k t nh danh c ch% nh. Tr v giá tr TRUE n u thành công, ng c l i tr v FALSE.
• bool mysql_data_seek ( resource result_identifier, int row_number): di chuy n con tr hàng bên trong c a k t
qu MySQL k t h p v#i k t qu nh danh c th ch% n s hàng c ch% nh. Nó s tr v TRUE n u
thành công, ng c l i tr v FALSE.Row_number b t u t i 0, và nên có giá tr trong kho ng t 0 n
mysql_num_rows - 1.
• string mysql_db_name ( resource result, int row [, mixed field]): l y tham s u tiên là con tr k t qu t
vi c g i hàm mysql_list_dbs( ). Tham s hàng là ch% m c n k t qu gán. N u x y ra l(i, thì tr v FALSE.S
d ng hàm mysql_errono( ) và mysql_error( ) xem b n ch t l(i.
• resource mysql_db_query ( string database, string query [, resource link_identifier]): ch n m t c s d li u
và th c thi m t truy v n trên nó. N u liên k t nh danh tùy ch n không c ch% nh hàm s c tìm ra m t liên
k tm n MySQL server và n u không có liên k t nào c tìm th y thì nó s t o ra m t liên k t nh n u hàm
mysql_connect( ) ã c g i không có tham s nào. Hàm s tr v m t k t qu MySQL d ng, hay là FALSE
n u b l(i.
• bool mysql_drop_db ( string database_name [, resource link_identifier]): hu/ b toàn b c s d li u t
server k t h p v#i liên k t nh danh ch% nh. Tr v TRUE n u thành công, FALSE n u g&p l(i.
• int mysql_errno ( [resource link_identifier]): tr v s l(i t hàm MySQL cu i cùng, hay là 0 n u không có
l(i nào.
• string mysql_error ( [resource link_identifier]): tr v v n b n l(i t hàm MySQL cu i cùng hay ' ' n u không
có l(i nào.
• string mysql_escape_string ( string unescaped_string): tránh unescaped_string nó có th n i an toàn
trong mysql_querry( ).
• array mysql_fetch_array ( resource result [, int result_type]): tr v m t m ng t ng ng v#i hàng tìm
n p, hay là FALSE n u không có hàng nào.
• array mysql_fetch_assoc ( resource result): tr v m t m ng k t h p t ng ng v#i hàng tìm n p, hay là
FALSE n u không có hàng nào.
• object mysql_fetch_field ( resource result [, int field_offset]): tr v m t i t ng ch'a thông tin các tr ng.
Nó th ng c dùng l y thông tin v các tr ng trong m t k t qu truy v n.
• array mysql_fetch_lengths ( resource result): tr v m t m ng t ng ng v#i chi u dài c a m(i tr ng
trong hàng cu i cùng c tìm n p b i mysql_fetch_row() hay tr v FALSE n u l(i.
• object mysql_fetch_object ( resource result): tr v m t i t ng v#i các thu c tính t ng ng v#i hàng
tìm n p hay FALSE n u không có hàng nào.
• array mysql_fetch_row ( resource result): tr v m t m ng t ng ng v#i hàng tìm n p, n u không có hàng
nào thì tr v FALSE.
• string mysql_field_flags ( resource result, int field_offset): tr v tr ng các c c a tr ng c ch% nh.
• int mysql_field_len ( resource result, int field_offset): tr v chi u dài c a tr ng c ch% nh.
• string mysql_field_name ( resource result, int field_index): tr v tên c a tr ng ch% m c c ch% nh.
• int mysql_field_seek ( resource result, int field_offset): tìm ki m offset c a tr ng c ch% nh.
• string mysql_field_table ( resource result, int field_offset): tr v tên c a b ng mà tr ng c ch% nh
trong ó.
• string mysql_field_type ( resource result, int field_offset): tr v lo i c a tr ng c ch% nh .
• bool mysql_free_result ( resource result): gi i phóng t t c b nh# k t h p v#i nh danh k t qu result. Hàm
này ch% c g i khi b n quan tâm n bao nhiêu b nh# ang c s d ng cho các câu truy v n mà tr v các
t p h p l#n các k t qu . T t c k t qu b nh# k t h p s t ng c gi i phóng khi script k t thúc th c hi n.
Tr v TRUE n u thành công, FALSE n u th t b i.
• string mysql_get_client_info ( void): tr v chu(i bi u th phiên b n th vi n c a client.
lktlucky2002@yahoo.com Page 23 of 23
• string mysql_get_host_info ( [resource link_identifier]): tr v chu(i mô t lo i k t n i c dùng cho k t n i
link_indentifier,bao g$m c tên c a server host. N u link_indentifier b b qua, thì k t n i c m cu i cùng s
c s d ng.
• int mysql_get_proto_info ( [resource link_identifier]): tr v phiên b n giao th'c c dùng b i k t n i
link_identifier. N u link_identifier b b qua, k t n i m cu i cùng s c dùng.
• string mysql_get_server_info ( [resource link_identifier]): tr v phiên b n c a server c dùng b i k t n i
link_identifier, n u link_identifier b b qua, k t n i c m cu i cùng s c s d ng.
• string mysql_info ( [resource link_identifier]): tr v thông tin chi ti t v truy v n cu i cùng s d ng
link_identifier.N u link_identifier không c ch% nh, liên k t cu i cùng cm s c th a nh n.
• int mysql_insert_id ( [resource link_identifier]): tr v ID c t o cho b i c t AUTO_INCREMENT b i câu
l nh truy v n INSERT tr #c ó s d ng link_identifier c cho. N u link_identifier không c ch% nh, liên
k t m cu i cùng s c th a nh n.
• resource mysql_list_dbs ( [resource link_identifier]): tr v con tr k t qu ch'a các c s d li u có s n t
daemon mysql hi n hành.
• resource mysql_list_fields ( string database_name, string table_name [, resource link_identifier]): truy xu t
thông tin v tên các b ng cho tr #c. Các tham s là tên các c s d li u hay tên các b ng.
• resource mysql_list_processes ( [resource link_identifier]): tr v con tr k t qu mô t các lu$ng hi n hành
c a server.
• resource mysql_list_tables ( string database [, resource link_identifier]): l y tên c s d li u và tr v con
tr k t qu .
• int mysql_num_fields ( resource result): tr v s l ng các tr ng trong t p h p k t qu .
• int mysql_num_rows ( resource result): tr v s l ng các hàng trong t p h p k t qu . Hàm này ch% úng cho
các câu l nh SELECT.
• resource mysql_pconnect ( [string server [, string username [, string password]]]): thi t l p k t n i n
MySQL server.
• bool mysql_ping ( [resource link_identifier]): ki m tra k t n i n server có làm vi c hay không. N u nó
không làm vi c thì m t k t l i t ng th c hi n. Hàm này có th c dùng b i các script mà gi nguyên tr ng
thái nhàn r(i trong m t lúc ki m tra xem server có óng k t n i và k t n i l i n u c n thi t hay không. Hàm
này s tr v TRUE n u k t n i n server ang làm vi c n u không thì tr v FALSE.
• resource mysql_query ( string query [, resource link_identifier [, int result_mode]]): g i m t truy v n n c
s d li u hi n hành ang ho t ng trên server mà k t h p v#i nh danh liên k t c ch% nh. N u
link_identifier không c ch% nh, liên k t m cu i cùng s c th a nh n. N u không có liên k t nào c
m , hàm s c thi t l p m t liên k t n u mysql_connect( ) ã c g i không có tham s nào và dùng nó.
• string mysql_real_escape_string ( string unescaped_string [, resource link_identifier]): tránh c các kí t
&c bi t trong unescaped_string, tr v t p h p kí t hi n hành c a k t n i.
• mixed mysql_result ( resource result, int row [, mixed field]): tr v n i dung c a m t cell t t p h p k t qu
MySQL. Tham s tr ng có th là offset c a tr ng hay là tên tr ng hay là tên b ng c a tr ng.tên tr ng. N u
tên c t có tên hi u thì s d ng tên hi u thay cho tên c t.
• bool mysql_select_db ( string database_name [, resource link_identifier]): gán c s d li u hi n hành ho t
ng trên server mà k t h p v#i nh danh liên k t ch% nh. N u không có nh danh liên k t nào c ch% nh
thí liên k t m cu i cùng c th a nh n. N u không có liên k t nào c m thì hàm s c thi t l p m liên k t
nh khi hàm mysql_connect( ) ã c g i không có tham s và s d ng nó
• string mysql_stat ( [resource link_identifier]): tr v tình tr ng hi n hành c a server.
• string mysql_tablename ( resource result, int i): tr v tên b ng c a tr ng, l y con tr k t qu tr v b i hàm
mysql_list_table( ) c)ng nh ch% m c integer.
• int mysql_thread_id ( [resource link_identifier]): tr v ID c a thread hi n hành. N u k t n i b m t và b n
k t n i l i v#i mysql_ping( ), thì ID c a thread s b thay i. i u này có ngh.a là b n không nên l y ID c a
thread và ch'a nó cho sau này. B n nên l y nó khi nào b n c n nó.
• resource mysql_unbuffered_query ( string query [, resource link_identifier [, int result_mode]]): g i m t truy
v n SQL query n MySQL mà không c n các hàng k t qu tìm n p và m m t cách t ng nh
mysql_query( ).

lktlucky2002@yahoo.com Page 24 of 24
Sau ây là ví d n gi n trình bày cách k t n i, th c thi câu truy v n, in các hàng k t qu và ng ng k t
n i t c s d li u MySQL.

<?php
/* K t n i,ch n c s d li u */
$link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
or die("Could not connect");
print "Connected successfully";
mysql_select_db("my_database") or die("Could not select database");
/* Th c hi n câu truy v n SQL */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed");
/* In k t qu ra trang *.HTML */
print "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
print "\t<tr>\n";
foreach ($line as $col_value) {
print "\t\t<td>$col_value</td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";
/* Free resultset */
mysql_free_result($result);
/* óng k t n i */
mysql_close($link);
?>

S c n thi t c a m t c s d li u không ch% b i nhu c u ph c v , t o ra các ngu$n tài li u m t cách


phong phú, mà b i s t ng lên c a nhu c u truy c p các thông tin "tr c ti p" trong ngày b+ng vi c s d ng m t
giao di n n gi n và h p nh t. B n có th cho phép m i ng i trong các v n phòng bán hàng truy v n m t c s
d li u hàng t$n kho. C s, d li u này có th c xây d ng khác, ch y trên m t h i u hành hoàn toàn khác
v#i máy tính c a ng i dùng.
V#i m t web server có c u hình t t, m t c s d li u server( ch*ng h n nh MySQL), và m t vài "phép
th n thông" c a PHP, ch% nh ng th' ng i dùng c n m#i có th có trên trình duy t web.
Cu i cùng: n u b n c n các thông tin luôn n ng ng, c p nh t, b n c n ph i phát tri n m t c s d li u
+ng sau 'ng d ng web.V#i m t c s d li u phía sau, web site c a b n s t c m t trình ph'c t p và
linh ho t, n i mà d li u c t o ra và s d ng, thông tin c làm cho có ý ngh.a v#i ng i dùng mà không c n
ph i b t bu c nó ph i “ úc n&n” l i cho v a v#i cách hi n th hay t ch'c nó.

IV. Ki n trúc c a m t ng d ng Web Database


Các ph n c b n c a 'ng d ng Web Database là:
Client: trình duy t web c a ng i dùng, m t java applet, m t 'ng d ng java, th m chí là m t
platform ph thu c vào ch ng trình c a client.
3ng d ng logic: mã hoá các thu t toán s d ng trong các scripts CGI, các modul &c bi t c a web
server, th m chí m t 'ng d ng ph thu c vào server.
K t n i database: the database API, hay là các giao th'c k t n i thông th ng nh ODBC hay
JDBC.
Database server: RDBMS, ODBMS...
Vi c th c hi n các 'ng d ng ó có th c th c hi n b i s d ng mô hình nhi u l#p, b i m t hay nhi u l#p có
th k t h p v#i nhau. Cách th c hi n thông th ng nh t là h th ng ba l#p.
1. L#p th' 1: web client( ví d nh trình duy t web c a ng i dùng).
2. L#p th' 2: web server, các scripts c a CGI, k t n i API n database.
lktlucky2002@yahoo.com Page 25 of 25
3. L#p th' 3: database server (ví d MySQL server).

Mô hình các l#p c th nh sau:

Web
browser
HTTP

Web server
+ ODBC/JDBC
CGI Database
Java Applet/ HTTP Database specific API
programs/
Application Servlets/
PHP scripts Third Tier

Second Tier
HTTP
Platform
dependent
Client

i v#i Web site xây d ng b+ng PHP&MySQL thì mô hình 'ng d ng web database nh sau:

1 2 3
Trình duy t Web server PHP engine MySQL server
6 5 4

M t giao d ch chính c a Web database bao g$m các giai o n sau:


1. Trình duy t Web c a ng i dùng s a ra m t yêu c u HTTP cho m t trang web riêng bi t... Ví d ,
mu n vi t ý ki n c a mình vào guestbook, sau khi i n vào các thông tin c n thi t theo yêu c u vào trong các
form HTML, ng i dùng b m vào nút “G i i”, thì thông tin v a m#i vi t ó s c hi n th trên trang
index.php,
2. Web server s nh n c m t yêu c u cho trang index.php, nó s truy xu t file này và chuy n nó
qua PHP engine x lý.
3. PHP engine b t u phân tích script. Bên trong script là m t yêu c u k t n i n c s d li u và
th c thi m t truy v n. PHP m m t k t n i n MySQL server và g i trên m t truy v n chính xác.
4. MySQL server nh n m t truy v n d li u và x lý nó, sau ó g i các k t qu v l i cho PHP engine.
5. PHP engine hoàn thành vi c ch y script mà th ng liên quan n nh d ng các k t qu truy v n
trong HTML. Sau ó nó tr k t qu HTML v l i Web server.
6. Web server chuy n HTML v l i trình duy t, n i mà b n có th th y danh sách các quy n sách mà
b n ã yêu c u.
lktlucky2002@yahoo.com Page 26 of 26
Quá trình này là c n b n t ng t i v#i các script engine hay các database server mà chúng ta dùng.
Th ng thì m t ph n m m Web server, PHP engine, và database server t t c cùng ch y trên cùng m t máy. Tuy
nhiên, vi c database server ch y trên m t máy khác c)ng là i u khá thông d ng. B n có th làm c i u này
b i các lý do b o m t, t ng dung l ng .

lktlucky2002@yahoo.com Page 27 of 27

You might also like