SlideShare a Scribd company logo
1 of 115
Download to read offline
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
1
Ban chØ ÂźÂčo c«ng nghÖ th«ng tin cña cÂŹ quan ٦ng
***
T”I liÖu tham kh¶o
Ng«n ngĂ· lËp tr×nh pHP
H” néi, 2003
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
2
PhÇn I : GiĂ­i thiÖu ng«n ngĂ· lËp tr×nh PHP
ch−¬ng i : Ng«n ngĂ· lËp tr×nh pHP
I. GiĂ­i thiÖu PHP v” m«i tr−ĂȘng lËp tr×nh web.
1. PHP l” g× ?
Cži tÂȘn PHP ban ¼Çu ¼−üc viÕt tŸt bĂ«i cĂŽm tĂ” Personal Home Page, v”
¼−üc phžt triÓn tĂ” nšm 1994 bĂ«i Rasmus Lerdorf. LĂłc ¼Çu chØ l” mĂ©t bĂ© ¼Æc
t¶ Perl, ¼−üc sö dĂŽng ¼Ó l−u dÊu vÕt ng−ĂȘi dĂŻng trÂȘn cžc trang web. Sau Ÿã,
Rasmus Lerdorf Ÿ· phžt triÓn PHP nh− l” mĂ©t mžy ¼Æc t¶ (Scripting engine).
V”o giĂ·a nšm 1997, PHP Ÿ· ¼−üc phžt triÓn nhanh chĂŁng trong sĂč yÂȘu thÝch
cña nhiÒu ng−ĂȘi. PHP Ÿ· kh«ng cßn l” mĂ©t dĂč žn cž nh©n cña Rasmus
Lerdorf v” Ÿ· trĂ« th”nh mĂ©t c«ng nghÖ web quan trĂ€ng. Zeev Suraski v”
Andi Gutmans Ÿ· ho”n thiÖn viÖc ph©n tÝch cĂł phžp cho ng«n ngĂ· ¼Ó rĂ„i
thžng 6 nšm 1998, PHP3 Ÿ· ra ÂźĂȘi (phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng l”
*.php3). Cho ¼Õn tËn thĂȘi ÂźiÓm Ÿã, PHP ch−a mĂ©t lÇn ¼−üc phžt triÓn chÝnh
thĂžc, mĂ©t yÂȘu cÇu viÕt lÂči bĂ© ¼Æc t¶ ¼−üc ¼−a ra, ngay sau Ÿã PHP4 ra ÂźĂȘi
(phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng ph¶i l” *.php4 m” l” *.php). PHP4
nhanh hÂŹn so vĂ­i PHP3 rÊt nhiÒu. PHP b©y giĂȘ ¼−üc gĂ€i l” PHP Hypertext
PreProcesor.
2. TÂči sao ph¶i sö dĂŽng PHP
Nh− chĂłng ta Ÿ· biÕt, cĂŁ rÊt nhiÒu trang web ¼−üc x©y dĂčng bĂ«i ng«n
ng÷ HTML (HyperText Markup Language). §©y chØ l” nh÷ng trang web
tÜnh, nghÜa l” chĂłng chØ chĂža ÂźĂčng mĂ©t nĂ©i dung cĂŽ thÓ vĂ­i nhĂ·ng dßng všn
b¶n Ÿn thuÇn, h×nh ¶nh ,v” cĂŁ thÓ ¼−üc sĂč hç trĂź bĂ«i ng«n ngĂ· JavaScript,
hoÆc Java Apple. NhĂ·ng trang web nh− vËy ng−ĂȘi ta th−ĂȘng gĂ€i l” client-
side. Tuy nhiÂȘn, Internet v” Intranets Ÿ· ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng cÇn
tĂ­i cÂŹ sĂ« dĂ· liÖu. Cžc trang Ăžng dĂŽng nh− vËy ¼−üc gĂ€i l” trang web Ÿéng,
bĂ«i v× nĂ©i dung cña chĂłng lu«n thay ŸÊi tĂŻy thuĂ©c v”o dĂ· liÖu v” ng−ĂȘi sö
dĂŽng. PHP l” ng«n ngĂ· l”m ¼−üc nhĂ·ng ÂźiÒu nh− vËy. B»ng cžch chÂčy
ch−¬ng tr×nh PHP trÂȘn mžy chñ Web server, bÂčn cĂŁ thÓ tÂčo ra cžc Ăžng dĂŽng
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
3
cĂŁ sĂč t−¬ng tžc vĂ­i cÂŹ sĂ« dĂ· liÖu ¼Ó tÂčo ra nhĂ·ng trang web v” Ÿ©y ¼−üc gĂ€i
l” trang web Ÿéng.
ChĂłng ta h·y xem xÐt cžch hoÂčt Ÿéng
cña trang web ¼−üc viÕt b»ng ng«n ngĂ· HTML
v” PHP nh− thÕ n”o.
Víi cžc trang HTML :
Khi cĂŁ yÂȘu cÇu tĂ­i mĂ©t trang web tĂ”
phÝa ng−ĂȘi sö dĂŽng (browser). Web server
thĂčc hiÖu ba b−íc sau :
+ §Àc yÂȘu cÇu tĂ” phÝa browser,
+ T×m trang web trÂȘn server.
+ Göi trang web Ÿã trĂ« lÂči cho
browser (nÕu t×m thÊy)
qua mÂčng Internet hoÆc Intranet .
Víi cžc trang PHP :
Khžc vĂ­i cžc trang HTML, khi mĂ©t trang PHP ¼−üc yÂȘu cÇu, web
server ph©n tÝch v” thi h”nh cžc ÂźoÂčn m· PHP
¼Ó tÂčo ra trang HTML.
§iÒu Ÿã ¼−üc thÓ hiÖn b»ng bĂšn b−íc sau :
+ §Àc yÂȘu cÇu tö phÝa browser.
+ T×m trang web trÂȘn server.
+ ThĂčc hiÖn cžc ÂźoÂčn m· PHP trÂȘn trang web Ÿã ¼Ó söa
ŸÊi néi dung cña trang.
+ Göi trĂ« lÂči nĂ©i dung cho browser (Ÿ©y l” trang HTML
cĂŁ thÓ hiÓn thÞ ¼−üc bĂ«i tr×nh duyÖt Internet Explorer
hoÆc tr×nh duyÖt n”o Ÿã).
TĂŁm lÂči, sĂč khžc nhau giĂ·a HTML v” PHP
l” HTML kh«ng ¼−üc thĂčc hiÖn trÂȘn mžy
chñ Web server cßn cžc trang *.php
viÕt b»ng cžc ÂźoÂčn m· PHP ¼−üc thĂčc hiÖn
trÂȘn mžy chñ Web server do Ÿã nĂŁ linh Ÿéng v” mÒm dÎo hÂŹn .
Trang html
Web server
+ Đọc yĂȘu cáș§u từ browser
+ TĂŹm file.htm trĂȘn server
+ Gá»­i láșĄi cáșŁ file.htm cho browser
Request
http://domain/file.htm
Web server
+ Đọc yĂȘu cáș§u từ browser
+ TĂŹm trang web(file.php) trĂȘn server
+ Thá»±c hiện cĂĄc đoáșĄn mĂŁ PHP
+ Gá»­i tráșŁ láșĄi nội dung cho browser
Request
http://domain/file.php
Káșżt xuáș„t
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
4
3. NhĂ·ng ÂźiÓm mÂčnh cña PHP
-PHP thĂčc hiÖn vĂ­i tĂšc Ÿé rÊt nhanh v” hiÖu qu¶ .MĂ©t Server b×nh th−ĂȘng
cĂŁ thÓ Ÿžp Ăžng ¼−üc h”ng triÖu truy cËp tĂ­i trong mĂ©t ng”y.
PHP hç trü kÕt nùi tíi rÊt nhiÒu hÖ CSDL kh¾c nhau:
PostgreSQL,mSQL,Oracle, dbm, filePro ,Hyperware, informix,InterBase,
Sybase, ... Ngo”i ra cßn hç trĂź kÕt nĂši vĂ­i ODBC th«ng qua Ÿã cĂŁ thÓ kÕt
nĂši vĂ­i nhiÒu ng«n ngĂ· khžc m” ODBC hç trĂź.
-PHP cung cÊp mĂ©t hÖ thĂšng th− viÖn phong phĂł : Do PHP ngay tĂ” ¼Çu
¼−üc thiÕt kÕ nh»m mĂŽc ¼Ých x©y dĂčng v” phžt triÓn cžc Ăžng dĂŽng trÂȘn
web nÂȘn PHP cung cÊp rÊt nhiÒu h”m x©y dĂčng sÂœn giĂłp thĂčc hiÖn cžc
c«ng viÖc rÊt dÔ d”ng : göi, nhËn mail ,l”m viÖc vĂ­i cžc cookie, v” nhiÒu
thÞ khžc n÷a .
-PHP l” mĂ©t ng«n ngĂ· rÊt dÔ dĂŻng, dÔ hĂ€c v” Ÿn gi¶n hÂŹn nhiÒu so vĂ­i
cžc ng«n ngĂ· khžc nh− Perl, Java. NÕu bÂčn Ÿ· biÕt ng«n ngĂ· C th× mĂ€i
viÖc sÏ ho”n to”n thuËn lĂźi .
-PHP cĂŁ thÓ sö dĂŽng ¼−üc trÂȘn nhiÒu hÖ ÂźiÒu h”nh, chĂłng ta cĂŁ thÓ viÕt
chĂłng trÂȘn Unix, Lunix v” cžc phiÂȘn b¶n cña Windows. V” cĂŁ thÓ Âźem
m· PHP n”y chÂčy trÂȘn cžc hÖ ÂźiÒu h”nh khžc m” kh«ng ph¶i söa ŸÊi lÂči
m·.
-PHP l” ng«n ng÷ m· nguÄn më.
II. BiÕn, h»ng sĂš v” kiÓu dĂ· liÖu trong PHP.
1. KiÓu dĂ· liÂȘu .
PHP cĂŁ ba kiÓu dĂ· liÖu cÂŹ b¶n : interger, double v” string. Ngo”i ra cßn
cĂŁ cžc kiÓu dĂ· liÖu khžc (nh−ng kh«ng ph¶i cžc kiÓu dĂ· liÖu cÂŹ b¶n) nh−
arrays (cžc kiÓu dĂ· liÖu m¶ng), objects (cžc kiÓu dĂ· liÖu ŸÚi t−üng).
Interger l” kiÓu chiÕm 4 byte bĂ© nhĂ­ ,giž trÞ cña nĂŁ trong kho¶ng –2 tĂ»
tĂ­i + 2 tĂ». KiÓu Double l” kiÓu sĂš thĂčc ,phÂčm vi biÓu diÔn ± (10-308
Ă· 10308
).
KiÓu string dĂŻng ¼Ó chĂža cžc giž trÞ bao gĂ„m cžc kĂœ tĂč v” con sĂš .
VÝ dĂŽ : 2 // Ÿ©y l” kiÓu interger
1.0 // Ÿ©y l” kiÓu double
“2” // Ÿ©y l” kiÓu string
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
5
“2 hours” // Ÿ©y l” mĂ©t kiÓu string khžc
2. H»ng sÚ
H»ng sĂš l” nhĂ·ng giž trÞ kh«ng ŸÊi. ChĂłng ta th−ĂȘng dĂŻng h»ng sĂš ¼Ó
l−u cžc giž trÞ kh«ng ŸÊi trong suĂšt ch−¬ng tr×nh nh− : nhiÖt Ÿé (00
C), cžc giž
trÞ thĂȘi gian chØ sĂč chuyÓn giao giĂ·a sžng ,ch−a ,chiÒu ,tĂši ...
a. Khai bžo h»ng sÚ :
Ta dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš :
define(“COMPANY”, “Phop’s Bicycles”);
define(“YELLOW”, “#FFFF00”);
define(“VERSION”, 4);
define(“NL”, “<BR>n”);
Trong vÝ dĂŽ trÂȘn chĂłng ta Ÿ· dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš
NL. H»ng sĂš n”y l” mĂ©t thÎ ngŸt dßng trong HTML.
ChĂłng ta sÏ sö dĂŽng cžc h»ng sĂš trong PHP nh− sau :
echo (“Employment at ”. COMPANY. NL);
Cžch viÕt trÂȘn cĂČng giĂšng nh− cžc viÕt sau:
echo (“Employment at Phop’s Bicycles<BR>n”);
ChĂł Ăœ : h»ng sĂš ph¶i Ă« ngo”i hai dÊu “ v” ”. TrĂȘng hĂźp sau l” kh«ng cĂŁ
hiÖu lĂčc : echo (“Employment at COMPANY NL”);. Khi thĂčc hiÖn nĂŁ sÏ cho
kÕt qu¶ l” : “Employment at COMPANY NL”.
H”m defined() : h”m n”y dĂŻng ¼Ó kiÓm tra xem mĂ©t h»ng sĂš n”o Ÿã
Ÿ· ¼−üc khai bžo ch−a.
VÝ dî : if ( defined (“YELLOW”)) {
echo (“<BODY BGCOLOR=”. YELLOW. “>n”);
}
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
6
b. Cžc h»ng sĂš Ÿ· ¼−üc ¼Þnh nghÜa trong PHP (Built-in Constants):
§Ó hç trĂź cho ng−ĂȘi lËp tr×nh, PHP cung cÊp sÂœn cžc h»ng sĂš nh− : cžc
biÕn m«i trĂȘng, cžc biÕn cña Web server Apache ... NgĂȘi lËp tr×nh cĂŁ thÓ sö
dĂŽng h”m phpinfo() ¼Ó xem cžc giž trÞ n”y.
<HTML>
<!—phpinfo() -->
<BODY>
<?php phpinfo(); ?>
</BOCY>
</HTML>
+ H»ng sĂš nguyÂȘn : Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu integer. VÝ dĂŽ : 10
+ H»ng sĂš thĂčc: Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu double. VÝ dĂŽ : 10.00
+ HŸng kĂœ tĂč : Ÿ©y l” mĂ©t x©u kĂœ tĂč ¼Æt trong dÊu ngoÆc Ÿn hoÆc
kÐp.
VÝ dĂŽ : “Ng«n ngĂ· lËp tr×nh PHP”.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
7
3. BiÕn v” giž trÞ logic.
+ CĂČng giĂšng vĂ­i C/C++, PHP kh«ng cĂŁ khži niÖm TRUE v” FALSE.
Cžc giž trÞ TRUE ¼−üc hiÓu l” nhĂ·ng giž trÞ b»ng 1 v” giž trÞ FALSE l”
nhĂ·ng giž trÞ b»ng 0 hoÆc x©u rçng .
+ Khi sö dĂŽng biÕn chĂłng ta kh«ng cÇn khai bžo kiÓu .
VÝ dĂŽ : $a = 1; // $a l” mĂ©t biÕn kiÓu integer.
$a = 1.2; // b©y giĂȘ $a l” mĂ©t biÕn kiÓu double.
$a = “A” ; // b©y giĂȘ $a lÂči l” mĂ©t biÕn kiÓu string.
+ NÕu nh− thĂčc hiÖn phÐp tožn giĂ·a biÕn cĂŁ kiÓu sĂš v” kiÓu string,
PHP sÏ coi chuçi l” mĂ©t d·y sĂš nh− sau :
$str = “222B Baker Street”;
Ta thÊy biÕn $str cĂŁ giž trÞ kiÓu string, v” nÕu cĂ©ng sĂš 3 vĂ­i giž trÞ n”y
th× :
$x = 3 + $str ; // $x = 225
khi Ÿã biÕn $x nhËn ¼−üc giž trÞ 255 v× PHP Ÿ· cĂ©ng 3 vĂ­i ba sĂš ¼Çu.
Nhng nÕu ta in giž trÞ cña biÕn $str th×
echo ($str); // print : “222B Baker Street”
ChĂł Ăœ r»ng cžc phÐp tožn giĂ·a sĂš v” chuçi chØ Ÿóng khi kĂœ tĂč ¼Çu cña
chuçi l” sÚ .
+ Ta cĂČng cĂŁ thÓ l”m thay ŸÊi kiÓu giž trÞ cña mĂ©t biÕn b»ng cžch Ðp
kiÓu
$a = 11.2; // biÕn $a cã kiÓu double
$a = (int) $a; // b©y giĂȘ $a cĂŁ kiÓu integer ,giž trÞ l” 11
$a = (double) $a; // b©y giĂȘ $a lÂči cĂŁ kiÓu double, giž trÞ l” 11.0
$b = (string) $a ; // biÕn $b cĂŁ kiÓu string ,giž trÞ l” “11”
CĂČng ph¶i biÕt r»ng PHP tĂč Ÿéng chuyÓn ŸÊi kiÓu rÊt tĂšt. NÕu thËt sĂč
cÇn thiÕt chĂłng ta mĂ­i ph¶i dĂŻng cžch trÂȘn.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
8
+ Cžc h”m l”m viÖc vĂ­i biÕn
gettype() : h”m n”y tr¶ lÂči kiÓu cña mĂ©t biÕn n”o Ÿã. Giž trÞ tr¶ vÒ cĂŁ
thÓ l” : “integer”
“double”
“string”
“array”
“object”
“class”
“unknown type”
vÝ dî :
if (gettype($user_input) == “integer”)
{
$age = $user_input;
}
settype() : h”m n”y Ðp kiÓu cho mĂ©t biÕn n”o Ÿã. NÕu th”nh c«ng
h”m tr¶ vÒ giž trÞ 1 (true) ,ng−üc lÂči l” 0 (false).
vÝ du :
$a = 7.5;
settype($a, “integer”);
if (settype($a, “array”)){
echo (“Conversion succeeded. ”);
}else{
echo (“Conversion error. ”);
}
isset() v” unset() : H”m isset() kiÓm tra mĂ©t biÕn Ÿ· ¼−üc gžn giž trÞ
hay ch−a, h”m unset() sÏ gi¶i phĂŁng bĂ© nhĂ­ cho mĂ©t biÕn n”o Ÿã .
vÝ dî :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
9
$id = “323bb”;
if (isset($id)) {
echo (“DĂ· liÖu Ÿ· ¼−üc gžn”);
}else{
echo (“DĂ· liÖu ch−a ¼−üc gžn”);
}
unset($id);
if(!isset($id)) {
echo (“DĂ· liÖu Ÿ· ¼−üc gi¶i phĂŁng”);
}
empty() : CĂČng giĂšng h”m isset(), h”m empty() sÏ tr¶ vÒ giž trÞ 1
(true) nÕu mĂ©t biÕn l” rçng v” ng−üc lÂči 0 (false). §Úi vĂ­i biÕn cĂŁ kiÓu sĂš
giž trÞ b»ng 0 ¼−üc coi l” rçng, biÕn kiÓu string ¼−üc coi l” rçng nÕu x©u l”
x©u rçng.
vÝ dî:
echo empty($new) ; // true
$new = 1;
echo empty($new); // false
$new = “”;
echo empty($new); // true
$new = 0;
echo empty($new); // true
$new = “So 323”;
echo empty($new); // false
unset($new);
echo empty($new); // true
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
10
III. Cžc tožn tö
+ B¶ng cžc phÐp tožn sÚ hÀc
PhÐp tožn Ăœ nghÜa VÝ dĂŽ Gi¶i thÝch
+
-
*
/
%
PhÐp céng
PhÐp trÔ
PhÐp nh©n
PhÐp chia
Chia d
7 + 2
7 – 2
7 * 2
7 / 2
7 % 2
ThĂčc hiÖn phÐp cĂ©ng giĂ·a 7 v” 2 : 9
ThĂčc hiÖn phÐp trĂ” giĂ·a 7 v” 2 : 5
ThĂčc hiÖn phÐp nh©n giĂ·a 7 v” 2 : 14
ThĂčc hiÖn phÐp chia giĂ·a 7 v” 2 : 3.5
ThĂčc hiÖn phÐp chia d giĂ·a 7 v” 2 : 1
Ta cĂŁ thÓ viÕt cžc phÐp tožn ngŸn gĂ€n nh− b¶ng sau :
Khi viÕt T−¬ng ¼−¬ng víi
$h += $i
$h -= $i
$h *= $i
$h /= $i
$h %= $i
$h = $h + $i
$h = $h - $i
$h = $h * $i
$h = $h / $i
$h = $h % $i
+ PhÐp gžn :
vÝ dî :
$x = 1;
$y = $x + 1;
$length = $area / $width;
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
11
+ B¶ng cžc phÐp tožn quan hÖ
PhÐp
tožn
Ăœ nghÜa VÝ dĂŽ Gi¶i thich
==
<
>
<=
>=
!=
<>
So sžnh b»ng
So sžnh nhå hn
So sžnh lín hn
Nhá h¬n hoÆc
b»ng
Lín h¬n hoÆc
b»ng
So sžnh khžc
So sžnh khžc
$h ==
$i
$h < $i
$h > $i
$h <=
$i
$h =>
$i
$h != $i
$h <>
$i
KiÓm tra $h v” $i cĂŁ b»ng nhau
kh«ng
KiÓm tra $h cĂŁ nhĂĄ hÂŹn $i kh«ng
KiÓm tra $h cĂŁ lĂ­n hÂŹn $i kh«ng
KiÓm tra $h cĂŁ nhĂ« hÂŹn hoÆc b»ng $i
KiÓm tra $h cĂŁ lĂ­n hÂŹn hoÆc b»ng $i
KiÓm tra $h cĂŁ khžc $i kh«ng
KiÓm tra $h cĂŁ khžc $i kh«ng
Cžc phÐp so sžnh th−ĂȘng dĂŻng kiÓm tra ÂźiÒu kiÖn trong cžc c©u lÖnh
ÂźiÒu khiÓn m” ta sÏ hĂ€c Ă« b”i sau .
+ B¶ng cžc phÐp tožn logic
PhÐp tožn logic cĂŻng vĂ­i tožn hÂčng tÂčo th”nh biÓu thĂžc logic. BiÓu thĂžc
logic cĂŁ thÓ cĂŁ giž trÞ l” 1 (true) hoÆc 0 (false) .
Tožn hÂčng a Tožn hÂčng b a && b a || b !a !b
1
1
0
0
1
0
1
0
1
0
0
0
1
1
1
0
0
0
1
1
0
1
0
1
+ C¾c phÐp to¾n víi biÕn kiÓu string .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
12
Ta sö dĂŽng dÊu “. “ ¼Ó ghÐp hai biÕn kiÓu string vĂ­i nhau .
vÝ dî : $first = “Phineas”;
$last = “Phop”;
$full = $first. “ ”. $last; // $full = “Phineas Phop” ;
echo ($full);
Ta cĂŁ thÓ ghÐp hai x©u nh− sau:
echo ($last. “’s Bicycles”); //print : Phop’s Bicycles
§Ó cĂŁ thÓ chÌn mĂ©t biÕn v”o trong h”ng cĂŁ kiÓu string th× tÂȘn biÕn
ph¶i ¼Ó trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n.
echo (“${last}’s Bicycles”);
+ Cžc phÐp tožn thao tžc mÞc bit.
Cžc phÐp tožn thao tžc mĂžc bit tžc Ÿéng lÂȘn tĂ”ng bit cña tožn hÂčng .
KĂœ hiÖu Ăœ nghÜa
&
|
^
AND bit
OR bit
XOR bit
B¶ng cžc phÐp tožn nh− sau :
& KÕt qu¶ | KÕt qu¶ ^ KÕt qu¶
1&1
1&0
0&1
0&0
1
0
0
0
1 | 1
1 | 0
0 | 1
0 | 0
1
1
1
0
1^1
1^0
0^1
0^0
0
1
1
0
PHP cĂČng hç trĂź cžc phÐp dÞch ph¶i v” dÞch trži
>> : dÞch ph¶i
<< : dÞch tr¾i
Gi¶ sö $a l” mĂ©t biÕn nguyÂȘn th× phÐp tožn : $a >> n l”m cho cžc bit
trong $a bÞ dÞch ph¶i Âźi n vÞ trÝ. T−¬ng tĂč ta cĂŁ phÐp dÞch trži .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
13
vÝ dî : 11 >> 2 = 2 ;
v× :
11 (1011)
>> 2
2 (0010)
+ Cžc phÐp tožn tšng gi¶m :
- PhÐp tšng : phÐp tšng (tožn tö tšng) tšng giž trÞ cña tožn hÂčng lÂȘn
mĂ©t Ÿn vÞ.
$a ++ : $a ¼−üc sö dĂŽng rĂ„i mĂ­i tšng
++ $a : $a tšng rĂ„i mĂ­i ¼−üc sö dĂŽng
- PhÐp gi¶m : t−¬ng tĂč nh− phÐp tšng, khžc l” giž trÞ bÞ gi¶m Âźi mĂ©t
¼¬n vÞ.
$a -- : $a ¼−üc sö dĂŽng rĂ„i mĂ­i gi¶m
-- $a : $a gi¶m rĂ„i mĂ­i ¼−üc sö dĂŽng
vÝ dî :
$a = 10; // $a b»ng 10
$b = $a++ ; // $a b»ng 11 nh−ng $b b»ng 10
$a = 10; // $a b»ng 10
$b = -- $a ; // $a b»ng 9 v” $b b»ng 9
+ PhÐp to¾n ¼iÒu kiÖn. ? :
PhÐp tožn ÂźiÒu kiÖn cĂŻng vĂ­i tožn hÂčng tÂčo nÂȘn biÓu thĂžc ÂźiÒu kiÖn.
Ta kĂœ hiÖu e1 ,e2, e3 l” ba tožn hÂčng.
BiÓu thĂžc cĂŁ dÂčng : e1 ? e2 : e3
NÕu e1 != 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e2
NÕu e1 == 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e3
vÝ dî : t×m max
max = $a>$b ? a : b ;
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
14
+ Tožn tö sizeof (ŸÚi t−üng) :
PhÐp tožn sizeof cho biÕt kÝch th−íc (tÝnh b»ng byte ) « nhĂ­ m” ŸÚi
t−üng chiÕm trong bĂ© nhĂ­. §Úi t−üng Ă« Ÿ©y cĂŁ kiÓu l” integer, double,
string.
vÝ dî : $a = 10;
echo sizeof($a); //sÏ in ra m”n h×nh l” : 4
IV. Cžc c©u lÖnh ÂźiÒu khiÓn
1. LÖnh if_else : Ÿ©y l” lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn .
a. DÂčng 1 :
if ( biÓu thĂžc ) c©u lÖnh;
C©u lÖnh Ă« Ÿ©y t−¬ng ¼−¬ng vĂ­i mĂ©t khĂši lÖnh. MĂ©t khĂši lÖnh ¼−üc
¼Æt trong dÊu ngoÆc kÐp.
Ăœ nghÜa :
+ NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh ¼−üc thĂčc hiÖn.
+ NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh kh«ng ¼−üc thĂčc hiÖn
b. DÂčng 2 :
if ( biÓu thþc )
c©u lÖnh 1;
else
c©u lÖnh 2;
Ăœ nghÜa :
+ NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh 1 ¼−üc thĂčc hiÖn.
+ NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh 2 ¼−üc thĂčc hiÖn
ChĂł Ăœ :
* C©u lÖnh 1 Ă« dÂčng 2 l” lÖnh if_else
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
15
+ NÕu l−üng else b»ng l−üng If th× else thuĂ©c vÒ If gÇn nhÊt
theo tĂ”ng cÆp tĂ” trong ra ngo”i.
VÝ dî :
$a = 10; $b = 10;
$c = 3; $d = 3;
$e = 12; $f = 8;
if($a == $b)
if($c == $d)
if($e == $f)
$max = $e;
else
$max = $f;
else
$max = $d;
else
$max = $b
echo $max ; //printf max = 8
+ NÕu l−üng else Ýt hÂŹn l−üng If th× else thuĂ©c vÒ If ngÇn nhÊt
theo tĂ”ng cÆp tĂ” trong ra ngo”i.
VÝ dî :
<?php
if ($a == $b)
if ($c == $d)
$max = 0
else
$max = $d;
?>
T−¬ng ¼−¬ng víi :
<?php
if ($a == $b)
{ if ( $c == $d)
$max = 0;
}
else
$max = $b;
?>
* C©u lÖnh 2 cña dÂčng 2 l” elseif :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
16
BŸt nguĂ„n tĂ” :
if ( biÓu_thþc1 )
c©u_lÖnh 1;
else
if ( biÓu_thþc 2 )
c©u_lÖnh 2;
else
if ( biÓu_thþc 3 )
c©u_lÖnh 3;
...
else
if ( biÓu_thþc i )
c©u_lÖnh i;
...
else
c©u_lÖnh n;
CĂŁ thÓ viÕt lÂči nh− sau:
if ( biÓu_thþc1 )
c©u_lÖnh 1;
elseif (biÓu_thþc 2)
c©u_lÖnh 2;
elseif (biÓu_thþc 3)
c©u_lÖnh 3;
...
elseif (biÓu_thþc i)
c©u_lÖnh i;
...
else
c©u_lÖnh n;
C©u lÖnh elseif tÂčo ra lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc
hiÖn 1 trong n c¾ch kh¾c nhau.
- NÕu biÓu_thĂžc i khžc kh«ng (i = 1,..n-1) th× thĂčc hiÖn c©u
lÖnh i .
- NÕu biÓu_thĂžc i b»ng kh«ng (i = 1, ..n-1) th× c©u lÖnh thĂž
n ¼−üc thĂčc hiÖn.
2. C©u lÖnh switch :
switch (biÓu_thþc n)
{
case n1:
c©u lÖnh 1;
break;
case n2:
c©u lÖnh 2;
break;
...
case nn:
c©u lÖnh nn;
[default: c©u lÖnh]
}
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
17
C©u lÖnh switch l” c©u lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc
hiÖn mĂ©t trong n cži rÏ nhžnh.
+NÕu biÓu_thĂžc n = ni (i = 1, .. n) th× c©u lÖnh sau case ni ¼−üc
thĂčc hiÖn cho ¼Õn khi gÆp lÖnh break hoÆc dÊu ngoÆc “}”
+NÕu biÓu_thĂžc n != mĂ€i ni (i = 1, .. n) m” cĂŁ nhžnh Default th×
cžc c©u lÖnh sau Default ¼−üc thĂčc hiÖn.
VÝ dî :
<?php
$val = 6;
$a = 5;
$b = 6;
$d = 7;
switch ($val)
{
case $a :
echo (“five”);
break;
case $b :
echo (“six”);
break;
case $c :
echo (“seven”);
break;
default :
echo ($val);
}
?>
3. C©u lÖnh FOR:
DÂčng lÖnh : for (biÓu_thĂžc 1; biÓu_thĂžc 2; biÓu_thĂžc 3)
c©u lÖnh ;
LÖnh for l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn.
B−íc 1 : tÝnh biÓu_thþc 1
B−íc 2 : tÝnh biÓu_thþc 2 :
NÕu biÓu_thĂžc 2 khžc 0 th× thĂčc hiÖn c©u lÖnh v” sang b−íc 3.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
18
NÕu biÓu_thĂžc 2 b»ng 0 th× kÕt thĂłc vßng for
B−íc 3 : tÝnh biÓu_thĂžc 3 v” quay lÂči b−íc 2.
+ biÓu_thĂžc 1, biÓu_thĂžc 2, biÓu_thĂžc 3 l” cžc th”nh phÇn. Mçi th”nh
phÇn cĂŁ thÓ gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã mçi biÓu thĂžc ¼−üc viÕt cžch nhau
mĂ©t dÊu phÈy (“,”).
+Cžc biÓu thĂžc ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i
+BiÓu thĂžc trong biÓu_thĂžc 2 quyÕt ¼Þnh thĂčc hiÖn th©n cña for.
VÝ dî :
<?php
for($i = 0; $j = 4,$i < $j; $i++,$j--)
{ echo (“i =”. $i. “ ,j = “. $j. “<br>”);
}
?>
+CĂŁ thÓ vŸng mÆt bÊt kÓ th”nh phÇn n”o. NÕu vŸng mÆt biÓu_thĂžc 2
th× c©u lÖnh lu«n ¼−üc thĂčc hiÖn. MÆc dĂŻ vŸng mÆt vÉn ph¶i cĂŁ dÊu chÊm
phÈy (“;”)
VÝ dî :
<?php
for ( ; ; ) {
if (my_function() == “stop”) break;
}
?>
+NÕu vŸng biÓu_thĂžc 1 v” biÓu_thĂžc 3 th× :
for ( ; biÓu_thþc 2 ; ) cau_lenh ;
t−¬ng ¼−¬ng víi :
while (biÓu_thþc 2) cau_lenh ;
4. C©u lÖnh WHILE
while (biÓu_thþc)
c©u lÖnh ;
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
19
LÖnh while l” mĂ©t lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn. §iÒu kiÖn thĂčc hiÖn
¼−üc kiÓm tra Ă« ¼Çu chu tr×nh.
B−íc 1 : TÝnh biÓu thþc
NÕu biÓu thĂžc khžc kh«ng, sang b−íc 2
NÕu biÓu thĂžc b»ng kh«ng, kÕt thĂłc vßng while
B−íc 2 : ThĂčc hiÖn c©u lÖnh.
Quay lÂči b−íc 1.
ChĂł Ăœ :
+ BiÓu thĂžc cĂŁ thÓ bao gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã cžc biÓu thĂžc ¼−üc
viÕt cžch nhau mĂ©t dÊu phÈy ,v” ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i. BiÓu
thĂžc cuĂši cĂŻng quyÕt ¼Þnh thĂčc hiÖn c©u lÖnh.
+ Kh«ng ¼−üc phÐp vŸng mÆt biÓu thĂžc
+ §Ó tÂčo chu tr×nh v« tËn th×
while(1)
{ ...
if (biÓu_thþc) break;
...
}
VÝ dî :
$i = 11;
while (--$i)
{ if (my_function($i) == “error”) {
break;
}
++ $number;
}
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
20
5. LÖnh DO ... WHILE
DÂčng lÖnh :
do {
c©u lÖnh;
}while (biÓu_thþc);
LÖnh do ... while l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn, trong Ÿã ÂźiÒu kiÖn
thĂčc hiÖn chu tr×nh ¼−üc kiÓm tra Ă« cuĂši chu tr×nh.
HoÂčt Ÿéng :
B−íc 1 : ThĂčc hiÖn c©u lÖnh
B−íc 2 : TÝnh biÓu thþc biÓu_thþc
+NÕu biÓu thĂžc biÓu_thĂžc khžc kh«ng th× quay lÂči b−íc 1
+NÕu biÓu thĂžc biÓu_thĂžc b»ng kh«ng th× kÕt thĂłc do ... while.
VÝ dî :
<?php
echo (“<SELECT name=’num’>n”);
$i = 0;
$total = 10;
do {
echo (“t <OPTION value=$i>$i</OPTION>n”);
}while(++ $i < $total);
echo (“</SELECT>n”);
?>
6. LÖnh break
L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn v” th−ĂȘng dĂŻng ¼Ó ra khĂĄi th©n cña
switch, while, do ... while, for .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
21
LÖnh break chØ cho phÐp thožt khĂĄi th©n cžc lÖnh bÂȘn trong nhÊt chĂža
nĂŁ.
7. LÖnh continue
L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn .LÖnh th−ĂȘng dĂŻng ¼Ó bŸt ¼Çu lÂči
mĂ©t chu tr×nh mĂ­i trong cžc lÖnh for, while, do ... while m” kh«ng cÇn thĂčc
hiÖn hÕt to”n bĂ© th©n cña cña lÖnh tÂčo chu tr×nh.
8. Khai bžo tiÒn xö lĂœ include v” require .
§Ó sö dĂŽng cžc ÂźoÂčn m· Ă« bÂȘn ngo”i, chĂłng ta cĂŁ thÓ sö dĂŽng khai
bžo tiÒn xö lĂœ include v” require. Cho phÐp chĂłng ta x©y dĂčng cžc h”m cžc
h»ng sĂš, v” bÊt kĂș ÂźoÂčn m· n”o sau Ÿã cĂŁ thÓ chÌn v”o cžc ÂźoÂčn script.
Require khžc include l”, nĂŁ cĂŁ thÓ l”m thay ŸÊi nĂ©i dung cña trang hiÖn
tÂči khi biÂȘn dÞch, cžc trang n”y dĂŻng ¼Ó khai bžo cžc biÕn, cžc h»ng sĂš
hay cžc ÂźoÂčn m· Ÿn gi¶n kh«ng cĂŁ vßng lÆp. Khi Ÿã include cho phÐp
thĂčc hiÖn cžc c©u lÖnh phĂžc tÂčp – cĂŁ c©u lÖnh tÂčo chu tr×nh. NĂŁ chØ sö
dĂŽng cžc h”m nh− nhĂ·ng h”m ngo”i cña ch−¬ng tr×nh.
V. H”m trong PHP
1. Quy tŸc x©y dĂčng h”m
function tÂȘn_h”m (danh sžch ŸÚi sĂš h×nh thĂžc) {
Th©n h”m .
}
+ §Þnh nghÜa h”m kh«ng nhÊt thiÕt ph¶i n»m ngo”i th©n mĂ€i h”m,
trong h”m cĂŁ thÓ cĂŁ h”m khžc. Nh−ng viÖc sö dĂŽng mĂ©t h”m kh«ng khžc
nhau giĂ·a x©y dĂčng h”m trong th©n mĂ©t h”m v” ngo”i mĂ€i h”m .
+ TÂȘn h”m tuĂș ¼Æt v” khžc tÂȘn h”m chuÈn.
+ H”m cĂŁ thÓ cĂŁ giž trÞ tr¶ vÒ hoÆc kh«ng.
+ Cžc c©u lÖnh ¼−üc quyÒn gĂ€i bÊt kĂș h”m n”o Ÿ· ¼−üc khai bžo v” Ÿ·
¼−üc ¼Þnh nghÜa.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
22
+ Return : - Tr¶ mĂ©t giž trÞ vÒ cho nÂŹi gĂ€i h”m
- L” nÂŹi bžo kÕt thĂłc h”m
2. GÀi h”m .
+ H”m ph¶i ¼−üc x©y dĂčng (khai bžo) tr−íc khi gĂ€i .
+ Khi gĂ€i h”m, nÕu cĂŁ giž trÞ tr¶ vÒ th−ĂȘng ¼−üc ¼Æt trong biÓu thĂžc .
3. BiÕn to”n cĂŽ v” biÕn cĂŽc bĂ©.
Th«ng th−ĂȘng PHP coi cžc biÕn ¼−üc sö dĂŽng trong th©n cña h”m l”
biÕn cĂŽc bĂ©. NghÜa l” biÕn trong th©n h”m kh«ng l”m thay ŸÊi giž trÞ cña
biÕn Ă« ngo”i h”m Ÿã. MuĂšn h”m l”m thay ŸÊi giž trÞ cña biÕn ngo”i ta cÇn
khai bžo global tr−íc biÕn Ÿã trong th©n h”m .
VÝ dî :
$position = “m”;
function change_pos()
{
$position = “s”;
}
change_pos();
echo (“$position”); //Prints “m”
Ta thÊy biÕn $position giž trÞ kh«ng ŸÊi sau khi gĂ€i h”m change_pos().
$position = “m”;
function change_pos()
{ global $position;
$position = “s”;
}
change_pos();
echo (“$position”); //Prints “s”
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
23
Ta cĂŁ thÓ viÕt nh− trÂȘn hoÆc ta cĂŁ thÓ viÕt :
$position = “m”;
function change_pos()
{ GOLOBALS[$position] = “s”;
}
change_pos();
echo (“$position”); //Prints “s”
VI. BiÕn m¶ng trong PHP
1. M¶ng mĂ©t chiÒu
M¶ng l” mĂ©t biÕn bao gĂ„m nhiÒu phÇn tö cĂŁ cĂŻng tÂȘn nh−ng khžc
nhau vÒ chØ sĂš (cžc chØ sĂš n”y tšng dÇn tĂ” 0 ¼Õn n). VĂ­i ng«n ngĂ· lËp tr×nh
C, cžc phÇn tö cña m¶ng cĂŁ cĂŻng kiÓu dĂ· liÖu ,nh−ng vĂ­i PHP th× mÒm dÎo
hÂŹn. Cžc phÇn tö cña m¶ng kh«ng nhÊt thiÕt ph¶i cĂŻng kiÓu.
a. Khai bžo m¶ng mĂ©t chiÒu.
Ta cĂŁ thÓ khai bžo m¶ng b»ng cžch gžn tÂȘn m¶ng vĂ­i dÊu Ÿãng mĂ«
ngoÆc vu«ng kh«ng cĂŁ chØ sĂš. ChĂłng ta h·y xÐt vÝ dĂŽ sau :
$countries[] = “cr”;
$countries[] = “de”;
$countries[] = “us”;
VÝ dĂŽ trÂȘn tÂčo ra mĂ©t m¶ng gĂ„m ba phÇn tö cĂŁ chØ sĂš l” 0, 1 v” 2.
ViÖc Ÿã cĂČng t−¬ng tĂč nh− ta gžn :
$countries[0] = “cr”;
$countries[1] = “de”;
$countries[2] = “us”;
Ngo”i ra cžc chØ sĂš cña m¶ng kh«ng nhÊt thiÕt ph¶i tšng dÇn m” cĂŁ thÓ
¼−üc khai b¾o nh sau :
$countries[50] = “cr”;
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
24
$countries[20] = “de”;
$countries[10] = “us”;
echo (“$countries[20]”); // prints de
Khi Ÿã ¼Ó thÂȘm mĂ©t phÇn tö mĂ­i v”o m¶ng chĂłng ta cĂŁ thÓ viÕt
$countries[] = “uk”; // chØ sĂš sÏ l” 51
MĂ©t phÇn tö mĂ­i ¼−üc thÂȘm v”o vĂ­i chØ sĂš l” chØ sĂš lĂ­n nhÊt cña m¶ng
cĂ©ng thÂȘm mĂ©t. Ngo”i ra cĂČng cĂŁ thÓ khai bžo m¶ng mĂ©t chiÒu b»ng c©u
lÖnh array
$countries = array (“cr”, “de”, “us”) ;
echo (“$countries[2]”); //prints “us”
§Ó chØ sĂš kh«ng bŸt ¼Çu tĂ” kh«ng ta cĂŁ thÓ khai bžo lÂči nh− sau
$countries = array (1 => “cr”, “de”, “us”);
echo (“$countries[2]”); //prints “de”
Tožn tö => cĂŁ thÓ ¼−üc sö dĂŽng tr−íc bÊt kĂș mĂ©t phÇn tö n”o trong
m¶ng
$countries = array (“cr”, 7 => “de”, “us”);
v” khi Ÿã phÇn tö cĂŁ giž trÞ “cr” cĂŁ chØ sĂš l” 0 cßn phÇn tö cĂŁ giž trÞ
“de”, “us” lÇn l−üt l” 7 v” 8. Khžc vĂ­i ng«n ngĂ· lËp tr×nh C, chØ sĂš cña m¶ng
mĂ©t chiÒu kh«ng chØ l” cžc sĂš nguyÂȘn m” cßn l” x©u kĂœ tĂč. Ta cĂŁ thÓ khai
b¾o nh− sau :
$countries[“ca”] = “Canada”;
$countries[“cr”] = “Costa Rica”;
$countries[“de”] = “Germany”;
$countries[“uk”] = “United Kingdom”;
$countries[“us”] = “United States”;
echo (“$countries[“ca”]); // print Canada
NÕu dĂŻng array th× sÏ l” :
$countries = (“ca” => “Canada”,
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
25
“cr” => “Costa Rica”,
“de” => “Germany”,
“uk” => “United Kingdom”,
“us” => “United States”);
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
26
b. L”m viÖc vĂ­i cžc phÇn tö cña m¶ng
CĂŁ thÓ sö dĂŽng vßng lÆp for xÐt tĂ”ng phÇn tö cña m¶ng.
$countries = array (“cr”, “de”, “us”);
$num_elements = count($countries);
for ($i = 0 ; $i < $num_elements ; $i ++) {
echo (“$countries[$i] <BR>n”);
}
VÝ dĂŽ trÂȘn sÏ Ÿóng khi chØ sĂš cña cžc phÇn tö tšng dÇn ¼Òu. NÕu chØ sĂš
cžc phÇn tö kh«ng theo mĂ©t thĂž tĂč n”o c¶ ta cĂŁ thÓ sö dĂŽng h”m list() v”
each().
reset ($countries);
while (list ($key, $value ) = each ($countries)) {
echo (“ChØ sù $key, gi¾ trÞ $value”);
}
§Ó di chuyÓn con trĂĄ tĂ­i phÇn tö tiÕp theo hoÆc tr−íc Ÿã ta cĂČng cĂŁ thÓ
dĂŻng h”m next() - h”m next() tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo
kh«ng ph¶i l” phÇn tö cuĂši cĂŻng, ng−üc lÂči l” 0 (false) v” prev() - h”m
prev() cho giž trÞ tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo kh«ng ph¶i l”
phÇn tö ¼Çu tiÂȘn, ng−üc lÂči l” 0 (false). H”m key () sÏ cho biÕt chØ sĂš v”
h”m current() sÏ cho biÕt giž trÞ cña phÇn tö Ÿã .
$arr = array (3, 4, 5, 6, 7);
do {
$k = key ($arr);
$val = current ($arr);
echo (“PhÇn tö $k = $val”);
}while
2. M¶ng hai chiÒu
ChĂłng ta cĂŁ thÓ khai bžo m¶ng hai chiÒu nh− sau :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
27
$countries = array (“Europs” => array (“de”, “uk”),
“North America” => array (“ca”, “cr”, “us”));
echo ($countries[“Europs”][1]); // print “uk”
echo ($countries[“North America”][2]); // print “us”
Ta cĂŁ cÊu trĂłc cña m¶ng trÂȘn nh− sau :
$countries[“Europs”] $countries[“North America”]
[0] [1] [0] [1] [2]
“de” “uk” “ca” “cr” “us”
CĂČng giĂšng nh− m¶ng mĂ©t chiÒu ta sÏ dĂŻng vßng lÆp nh− for, while, do
... while ¼Ó duyÖt qua cžc phÇn tö cña m¶ng.
VÝ dî :
$countries = array (“Europs” => array (“de”, “uk”),
“North America” => array (“ca”, “cr”, “us”));
while (list ($key1) = each ($countries)) {
echo (“$key1 : <BR>n”);
while (list ($key2, $val) = each($countries[“$key1”])) {
echo (“ - $val <BR>n”)
}
}
Khi chÂčy ch−¬ng tr×nh sÏ in ra m”n h×nh l” :
Europ :
- de
- uk
North America :
- ca
- cr
- us
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
28
3. Cžc h”m sŸp xÕp m¶ng .
PHP cung cÊp cho chĂłng ta cžc h”m ¼Ó sŸp xÕp m¶ng. VĂ­i mçi loÂči
m¶ng sÏ cĂŁ mĂ©t h”m t−¬ng Ăžng. VĂ­i m¶ng cĂŁ chØ sĂš l” kiÓu nguyÂȘn chĂłng ta
cĂŁ h”m sort() ¼Ó sŸp xÕp tšng dÇn cžc phÇn tö cña m¶ng, h”m rsort() sÏ sŸp
xÕp cžc phÇn tö cña m¶ng gi¶m dÇn .
$countries = array (“us”, “uk”, “ca”, “cr”, “de”);
sort ($countries);
while (list ($key, $val) = each ($countries)) {
echo (“Element $key equals $val <BR>n”);
}
Khi chÂčy ch−¬ng tr×nh sÏ l” :
Element 0 equals ca
Element 1 equals cr
Element 2 equals de
Element 3 equals uk
Element 4 equals us
VĂ­i m¶ng chØ sĂš cĂŁ kiÓu string th× dĂŻng h”m asort (), arsort () ¼Ó sŸp
xÕp m¶ng theo chiÒu tšng dÇn v” gi¶m dÇn. NÕu bÂčn dĂŻng cžc h”m sort() v”
rsort() th× cžc chØ sĂš cĂŁ kiÓu string sÏ chuyÓn th”nh cžc chØ sĂš cĂŁ kiÓu
nguyÂȘn.
$countries = array(“us” => “United States”,
“uk” => “United Kingdom”,
“ca” => “Canada”,
“cr” => “Costa Rica”,
“de” => “Germany”);
asort ($countries);
while (list($key, $val) = each($countries)) {
echo “Chi so $key bang $val <BR>n”;
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
29
}
KÕt qu¶ khi chÂčy ch−¬ng tr×nh :
Chi so ca bang Canada
Chi so cr bang Costa Rica
Chi so de bang Germany
Chi so uk bang United Kingdom
Chi so us bang United States
Nh−ng nÕu thay dßng asort ($countries); b»ng sort ($countries); kÕt
qu¶ sÏ l”
Chi so 0 bang Canada
Chi so 1 bang Costa Rica
Chi so 2 bang Germany
Chi so 3 bang United Kingdom
Chi so 4 bang United States
§Ó sŸp xÕp m¶ng tšng dÇn hay gi¶m dÇn theo chØ sĂš chĂłng ta cĂŁ h”m
ksort() – tšng dÇn v” krsort() – gi¶m dÇn .
$countries = array(“e” => “United States”,
“d” => “United Kingdom”,
“c” => “Canada”,
“b” => “Costa Rica”,
“a” => “Germany”);
ksort ($countries);
while (list($key, $val) = each($countries)) {
echo “Chi so $key bang $val <BR>n”;
}
KÕt qu¶ :
Chi so a bang Germany
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
30
Chi so b bang Costa Rica
Chi so c bang Canada
Chi so d bang United Kingdom
Chi so e bang United States
VII. LËp tr×nh h−íng ¼ùi t−üng (OOP)
1. §Þnh nghÜa líp .
ChĂłng ta cĂŁ thÓ ¼Þnh nghÜa lĂ­p b»ng tožn tö class, v” trong mçi mĂ©t
lĂ­p chĂłng ta sÏ x©y dĂŽng cžc ph−¬ng thĂžc v” thuĂ©c tÝnh cho lĂ­p Ÿã .
Gi¶ sö muĂšn ¼Þnh nghÜa lĂ­p “Sesssion” chĂłng ta l”m nh− sau :
<?php
class Session
{
// §Þnh nghÜa cžc thuĂ©c tÝnh v” ph−¬ng thĂžc
// X©y dĂčng cžc ph−¬ng thĂžc cho lĂ­p
} // KÕt thĂłc mĂ©t lĂ­p
?>
§Ó ¼Þnh nghÜa thuĂ©c tÝnh cho lĂ­p chĂłng ta ¼Æt tĂ” khož var tr−íc thuĂ©c
tÝnh ¼ã.
<?
class Session
{
var $sqlhost = “localhost”;
var $sqluser = “root”;
var $sqlpass = “password”;
var $sqldb = “session”;
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
31
var $linkid;
var $seshid;
var $sessdata;
var $userid;
var $error_no;
var $err;
...
// §Þnh nghÜa cžc ph−¬ng thĂžc Ă« Ÿ©y
} //KÕt thóc ¼Þnh nghÜa líp
?>
TiÕp theo chĂłng ta sÏ ¼Þnh nghÜa cžc ph−¬ng thĂžc cho lĂ­p trÂȘn.
Ph−¬ng thĂžc cÇn x©y dĂčng ¼Çu tiÂȘn l” Session() sau Ÿã ¼Õn cžc ph−¬ng thĂžc
khžc.
<?
// §Þnh nghÜa líp Session
class Session
{
// §Þnh nghÜa cžc thuĂ©c tÝnh
.. .
// §Þnh nghÜa c¾c ph−¬ng thþc
function Session($localSeshID, $localUserID=0)
{
$this->seshid = $localSeshID;
$this->userid = $localUserID;
// KÕt nùi tíi MySQL
$this->linkid=mysql_connect($this->sqlhost, $this->sqluser, $this-
>sqlpass);
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
32
if (!$this->linkid)
{
$this->err=mysql_error();
$this->error_no=102;
}
}
... // §Þnh nghÜa c¾c ph−¬ng thþc kh¾c
}
?>
2. Sö dĂŽng lĂ­p Ÿ· ¼−üc ¼Þnh nghÜa.
§Ó khai bžo mĂ©t ŸÚi t−üng cĂŁ kiÓu thuĂ©c lĂ­p Ÿ· x©y dĂčng ta dĂŻng tožn
tö new nh− sau :
<?php
require (“classes/sessions.php”); //include class
$mysesh = new Session($seshid);
if ($mysesh->error_no)
{
//Th«ng bžo cã lçi
}
$user = $mysesh->sessdata[userid];
?>
<HTML>
<HEAD>
<TITLE>Welcome to my website, <? echo $user ?></TITLE>
</HEAD>
<BODY>
<a href=”nextpage.php?seshid=<? print $user ?>”>Next Page </a>
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
33
<FORM ACTION=”nextpage.php” METHOD=”POST”>
<input type=”hidden” name=”seshid” value=”<? print $seshid ?>”>
</FORM>
</BODY>
</HTML>
VIII. T×m hiÓu thÂȘm vÒ HTML
PhÇn mĂ©t chĂłng ta Ÿ· t×m hiÓu sÂŹ l−üc vÒ ng«n ngĂ· HTML. Trong
mĂŽc n”y chĂłng ta sÏ tr×nh b”y thÂȘm vÒ nĂŁ vĂ­i trĂ€ng t©m l” FORM cña
HTML. LĂœ do l” v× khi muĂšn giao tiÕp giĂ·a HTML v” PHP script th× kh«ng
thÓ kh«ng biÕt ¼Õn FORM. FORM l” c«ng cĂŽ phĂŠ biÕn nhÊt ¼Ó chuyÓn dĂ·
liÖu tĂ” HTML ¼Õn PHP script (client lÂȘn server).
Th«ng th−ĂȘng, khi viÕt mĂ©t script, ng−ĂȘi ta thiÕt kÕ mĂ©t FORM sao cho nĂŁ
cung cÊp ¼Çy Ÿñ nhĂ·ng th«ng tin m” script cÇn ¼Ó xö lĂœ.
1. CÊu trĂłc cña mĂ©t FORM
MĂ©t FORM ¼−üc mĂ« ¼Çu b»ng thÎ <FORM ... > v” kÕt thĂłc b»ng thÎ
</FORM>.
Trong FORM cĂŁ :
- ThuĂ©c tÝnh : FORM th−ĂȘng cĂŁ ba thuĂ©c tÝnh, ba thuĂ©c tÝnh n”y n»m
trong thÎ FORM mĂ« ¼Çu cña mĂ©t FORM : action, method, enctype .
- C¾c thÎ ¼−üc dïng trong FORM : input, select, textarea, hn, p, hr,
dir, dl, menu, ol, ul, address, blockquote, [isindex]. pre .
- FORM cĂŁ ba th”nh phÇn chÝnh : textarea, select, input .
- FORM cã thÓ ¼−üc dïng trong c¾c thÎ : blockquote,body,dd, li.
2. Cžc thuĂ©c tÝnh
Khi tÂčo mĂ©t FORM ,c«ng viÖc ¼Çu tiÂȘn l” xžc ¼Þnh thuĂ©c tÝnh cña nĂŁ.
- ThuĂ©c tÝnh action : Action=”URL” chØ ¼Õn script m” FORM sö
dĂŽng. Ngo”i ra nĂŁ cĂČng cĂŁ thÓ l” mailto url, khi Ÿã nĂ©i dung cña FORM
¼−üc mail ¼Õn ¼Þa chØ trong url .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
34
- ThuĂ©c tÝnh method : Method cĂŁ thÓ ¼−üc gžn b»ng “GET” hoÆc
“POST” ,nĂŁ chØ ra ph−¬ng thĂžc Post hay Get sÏ ¼−üc sö dĂŽng trong FORM,
giž trÞ ngÇm ¼Þnh l” Get.
- ThuĂ©c tÝnh enctype : Enctype=”Mime_type” :chØ ra loÂči dĂ· liÖu sÏ
göi Âźi. Giž trÞ ngÇm ¼Þnh l” application/x-www-form-urlencode.
Trong mĂ©t trang chĂłng ta cĂŁ thÓ sö dĂŽng nhiÒu FORM nhng kh«ng
¼−üc lĂ„ng chĂłng v”o nhau.
2. Cžc th”nh phÇn cÂŹ b¶n cña FORM.
MĂ©t FORM ,th«ng th−ĂȘng cĂŁ ba th”nh phÇn chÝnh :
+Textarea
+Select
+Input
a - Textarea
§−üc bŸt ¼Çu b»ng thÎ <Texterea> v” kÕt thĂłc b»ng thÎ </Texterea>.
BÂȘn trong chĂža cžc kĂœ tĂč, thÎ n”y ¼−üc dĂŻng lĂ„ng v”o trong FORM.
Cžc thuĂ©c tÝnh cña Texterea .
- Name : §Þnh nghÜa tÂȘn cña th”nh phÇn, thuĂ©c tÝnh n”y lu«n lu«n ph¶i
cĂŁ.
- Rows : Cho biÕt sĂš h”ng cña hĂ©p všn b¶n.
- Cols : Cho biÕt sĂš cĂ©t cña všn b¶n.
Wrap : ChØ ra cžch xö lĂœ word_wraping (cšn chiÒu d”i cña dßng všn
b¶n theo kÝch th−íc cña hĂ©p všn b¶n) trong hĂ©p thoÂči. NÕu wrap=”off”, chĂžc
nšng word_wraping bÞ cÊm. NÕu wrap=”vitual”, chĂžc nšng n”y ¼−üc bËt lÂȘn,
khi gĂą všn b¶n v”o, ta thÊy con trĂĄ tĂč Ÿéng xuĂšng h”ng mçi khi nĂŁ chÂčy ¼Õn
biÂȘn cña hĂ©p všn b¶n, kĂœ tĂč newline (OA hex) tĂč Ÿéng ¼−üc thÂȘm v”o nh−ng
kh«ng ¼−üc göi Âźi cĂŻng FORM. NÕu wrap=”physical”, chĂžc nšng n”y cĂČng
¼−üc bËt v” hoÂčt Ÿéng nh− trÂȘn nh−ng kĂœ tĂč newline ¼−üc göi Âźi cĂŻng vĂ­i
FORM.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
35
Všn b¶n n»m giĂ·a hai thÎ <Texterea> v” </Texterea> sÏ ¼−üc thÓ hiÖn
nh− ÂźoÂčn všn b¶n ngÇm ¼Þnh trong vĂŻng dĂ· liÖu.
VÝ dî:
<Texterea name=”van_ban” rows=”4” cols=”40”>
.. .
</ Texterea >
b. Select
§−üc bŸt ¼Çu b»ng thÎ <Select> v” kÕt thĂłc b»ng thÎ </ Select >, cÆp
thÎ n”y cĂŁ thÓ lĂ„ng trong FORM hay bÊt kĂș th”nh phÇn n”o cña FORM
ngoÂči trĂ” Texterea v” Select .
Select cĂŁ cžc thuĂ©c tÝnh sau :
- Name : TÂȘn cña th”nh phÇn.
- Size : Cho biÕt sĂš th”nh phÇn sÏ hiÓn thÞ, giž trÞ ngÇm ¼Þnh l” 1, do
Ÿã danh sžch lĂča chĂ€n th−ĂȘng ¼−üc thÓ hiÖn dĂ­i dÂčng pop-up menu. ThuĂ©c
tÝnh n”y cĂŁ thÓ kh«ng cĂŁ.
- Multiple : NÕu thuĂ©c tÝnh n”y ¼−üc thiÕt lËp, nhiÒu lĂča chĂ€n sÏ ¼−üc
chĂ€n cĂŻng mĂ©t lĂłc, ng−üc lÂči chØ ¼−üc chĂ€n mĂ©t item.
Khi sö dĂŽng Select, chĂłng ta cĂŁ thÓ dĂŻng thÂȘm Option
<Option>. .. .. .. </Option>
BÂȘn trong chĂža cžc kĂœ tĂč, cĂŁ thÓ ¼−üc sö dĂŽng lĂ„ng v”o Select .
Cžc thuĂ©c tÝnh Option :
- Disable : §žnh mĂ©t lĂča chĂ€n bÞ cÊm. Khi hiÓn thÞ, chĂ€n lĂča n”y sÏ bÞ
che mĂȘ.
- Selected : §žnh dÊu chĂ€n lĂča n”y Ÿ· ¼−üc chĂ€n, nÕu thuĂ©c tÝnh
Multiple ¼−üc bËt trong Select, bÂčn cĂŁ thÓ Ÿžnh dÊu Selected nhiÒu chĂ€n lĂča
cĂŻng lĂłc. NĂŁ dĂŻng ¼Ó Ÿžnh dÊu cžc lĂča chĂ€n ngÇm ¼Þnh.
- Value : ChØ ra giž trÞ ¼−üc gžn cho lĂča chĂ€n, nÕu kh«ng cĂŁ th× nĂ©i
dung cña th− mĂŽc option sÏ ¼−üc göi Âźi thay cho value.
c. Input
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
36
MĂ« ¼Çu b»ng thÎ < Input >, thÎ n”y cĂŁ thÓ dĂŻng trong bÊt cĂž th”nh
phÇn n”o khžc cña FORM ngoÂči trĂ” Texterea v” Select.
Cžc thuĂ©c tÝnh :
- Align : CĂŁ thÓ l” mĂ©t trong ba giž trÞ top, middle, bottom dĂŻng ¼Ó
cšn lÒ ¶nh vĂ­i cžc všn b¶n xung quanh, thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i
Type=“image” .
- Name : gŸn tÂȘn biÕn cho dĂ· liÖu cña th”nh phÇn n”y. Giž trÞ cña
thuĂ©c tÝnh do user lĂča chĂ€n .
- Type : ¼Þnh ra mĂ©t trong nhĂ·ng giž trÞ sau checkbox, hidden, image,
password, radio, reset, submit, text, file, bottom .
- Checked : chØ ra mĂ©t nĂłt radio, hay mĂ©t checkbox cÂŹ ¼−üc chĂ€n hay
kh«ng.
- Maxlength : chØ ra chiÒu d”i tĂši Âźa m” hĂ©p thoÂči všn b¶n cĂŁ thÓ chĂža,
thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i input cĂŁ type=”text” hay type=”password” .
- Size : chØ ra kÝch th−íc thĂčc sĂč cña hĂ©p thoÂči všn b¶n.
IX. Tãm l−üc
Nh− vËy, chĂłng ta Ÿ· kh¶o sžt hÇu hÕt cžc chĂžc nšng cÂŹ b¶n cña PHP, tĂ”
cžc kiÓu dĂ· liÖu, khai bžo biÕn, h”ng, m¶ng cho tĂ­i cžch thĂčc hiÖn
ch−¬ng tr×nh dÂčng Mžy khžch/Mžy chñ (Client/Server), v” nhĂłng cžc
ÂźoÂčn m· PHP v”o cžc trang HTML .v.v.
Nh− trÂȘn chĂłng ta Ÿ· tr×nh b”y, cÂŹ sĂ« dĂ· liÖu cho trang Web l” th”nh
phÇn kh«ng thÓ thiÕu, nĂŁ Ÿãng vai trß quyÕt ¼Þnh cho ch−¬ng tr×nh. VÝ lĂœ do
Ÿã, phÇn tiÕp theo chĂłng ta sÏ kh¶o sžt ng«n ngĂ· SQL v” cžc h”m API cña
PHP ¼Ó thĂčc hiÖn cžc lÖnh truy vÊn trÂȘn hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL.
X. Cžc h”m API trong PHP
1. Giíi thiÖu vÒ MySQL .
PHP hç trĂź mĂ©t sĂš l−üng lĂ­n cžc h”m l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu nh
Oracle, Sybase, PostgreSQL, MySQL. .. Th«ng qua chuÈn ODBC (Open
Database Connectivity), b»ng cžch sö dÎng cžc h”m API (Application
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
37
Programming Interface) m” PHP cĂŁ thÓ l”m viÖc ¼−üc vĂ­i nhiÒu hÖ qu¶n trÞ
cÂŹ sĂ« dĂ· liÖu nh− vËy. NÕu hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu kh«ng hç trĂź ODBC ,v”
hÂŹn nĂ·a ODBC cĂŁ ¼Æc ÂźiÓm chØ hç trĂź Ă« dÂčng chuÈn th× PHP cĂŁ thÓ l”m viÖc
vĂ­i ODBC Ă« tÇng trÂȘn. NÕu kh«ng muĂšn sö dĂŽng ODBC ta cĂŁ thÓ sö dĂŽng
cžc h”m API .
Trong phÇn n”y chĂłng ta chØ sö dĂŽng cžc h”m API ¼Ó l”m viÖc vĂ­i hÖ
qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL .
2. Cžc h”m cÂŹ b¶n l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL.
a) Cžc h”m kÕt nĂši ¼Õn MySQL Server
PHP cung cÊp hai h”m ¼Ó kÕt nĂši vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL :
mysql_connect v” mysql_pconnect .
+ mysql_connect () : h”m n”y sÏ tÂčo ra mĂ©t liÂȘn kÕt tĂ­i mžy chñ
MySQL .
Có phžp :
int mysql_connect (string [hostname [:port] [:/path_to_socket]], string
[username], string [password]);
Trong Ÿã :
- hostname : TÂȘn mžy chñ cÂŹ sĂ« dĂ· liÖu, nÂŹi trang web sÏ chĂža cÂŹ sĂ«
dĂ· liÖu. Giž trÞ ngÇm ¼Þnh l” “localhost’”
- :port : §Þa chØ cĂŠng, nÂŹi bĂ© mžy cÂŹ sĂ« dĂ· liÖu lŸng nghe yÂȘu cÇu. Giž trÞ
ngÇm ¼Þnh l” “:3306” .
- :/path_to_socket : CĂČng giĂšng nh− :port nh−ng chØ cho hÖ ÂźiÒu h”nh
UNIX. Giž trÞ ngÇm ¼Þnh l” “:/tmp/mysql.sock” .
- username : TÂȘn cña ng−ĂȘi sö dĂŽng ¼−üc phÐp kÕt nĂši v”o bĂ© mžy cÂŹ
sĂ« dĂ· liÖu.
- password : MËt khÈu cña ng−ĂȘi sö dĂŽng ¼Ó kÕt nĂši v”o bĂ© mžy cÂŹ sĂ«
dĂ· liÖu.
H”m n”y tr¶ vÒ m· sĂš nhËn dÂčng nÕu kÕt nĂši th”nh c«ng, giž trÞ 0
(false) nÕu viÖc kÕt nĂši cĂŁ lçi. M· sĂš nhËn dÂčng n”y sÏ ¼−üc sö dĂŽng cho tÊt
c¶ cžc yÂȘu cÇu tĂ­i bĂ© mžy cÂŹ sĂ« dĂ· liÖu sau n”y.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
38
SĂč kÕt nĂši n”y sÏ Ÿãng lÂči khi gĂ€i h”m mysql_close() hoÆc kÕt thĂłc
ÂźoÂčn PHP script.
+ mysql_pconnect() : H”m n”y tÂčo ra mĂ©t liÂȘn kÕt bÒn vĂ·ng vĂ­i mžy
chñ MySQL.
Có phžp :
int mysql_pconnect (string [hostname [:port] [:/path_to_socket]], string
[username], string [password]);
Tham sĂš v” giž trÞ tr¶ vÒ cña h”m n”y cĂČng giĂšng h”m
mysql_connect(). SĂč khžc biÕt giĂ·a hai h”m n”y l” liÂȘn kÕt tĂ­i mžy chñ
MySQL kh«ng bÞ Ÿãng lÂči kÓ c¶ khi kÕt thĂłc kÞch b¶n (script) PHP hay gĂ€i
h”m mysql_close(). MĂŽc ¼Ých cña h”m n”y l” lu«n lu«n duy tr× liÂȘn kÕt tĂ­i
mžy chñ MySQL do lu«n cĂŁ sĂč yÂȘu cÇu tĂ­i mžy chñ, tržnh cho mžy chñ ph¶i
t×m kiÕm m· sĂš nhËn dÂčng mĂ­i tĂ” Ÿã gi¶m thĂȘi gian truy cËp .
ChĂł Ăœ : h”m n”y chØ thĂčc hiÖn ¼−üc khi PHP ¼−üc ¼Þnh cÊu h×nh nh−
l” mét module cña Web server .
+ mysql_close() : H”m n”y huĂ» bĂĄ sĂč kÕt nĂši tĂ­i mžy chñ MySQL .
Có phžp :
int mysql_close(int [link_identifier]);
Tham sĂš link_identifier l” m· sĂš nhËn dÂčng tÂčo ra bĂ«i h”m
mysql_connect(). H”m tr¶ vÒ l” True nÕu th”nh c«ng, ng−üc lÂči l” False .
b) Cžc h”m thao tžc trÂȘn CSDL
+ mysql_create_db() : H”m tÂčo cÂŹ sĂ« dĂ· liÖu
Có phžp :
int mysql_create_db(string name, int [link_identifier]) ;
Trong Ÿã :
- string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn tÂčo.
- int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m
mysql_connect() .
ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó tÂčo cÂŹ sĂ« dĂ· liÖu th«ng
qua h”m mysql_query() .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
39
+ mysql_drop_db() : H”m xož cÂŹ sĂ« dĂ· liÖu
Có phžp :
int mysql_drop_db(string name, int [link_identifier]);
Trong Ÿã :
- string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn xož .
- int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m
mysql_connect() .
ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó xož cÂŹ sĂ« dĂ· liÖu th«ng
qua h”m mysql_query().
+ mysql_select_db() : H”m cho cÂŹ sĂ« dĂ· liÖu hoÂčt Ÿéng .
Có phžp :
int mysql_select_db(string database_name, int [link_identifier]);
Trong Ÿã:
- database_name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu m” sau n”y cžc h”m API
khžc cña PHP sÏ thĂčc hiÖn trÂȘn Ÿã.
- int link_identifier : M· nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect().
C©u lÖnh n”y sÏ gŸn tÂȘn cÂŹ sĂ« dĂ· liÖu vĂ­i m· nhËn dÂčng, sau n”y khi
l”m viÖc vĂ­i link_identifier sÏ bao gĂ„m c¶ cÂŹ sĂ« dĂ· liÖu ¼−üc chĂ€n .
c) Cžc h”m thao tžc trÂȘn dĂ· liÖu
+ mysql_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL .
Có phžp :
int mysql_query(string query, [int link_identifier]) ;
Trong Ÿã :
- string query : C©u lÖnh SQL cÇn göi tĂ­i mžy chñ MySQL .
- int link_identifier : M· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn trong
h”m mysql_select_db() tr−íc Ÿã .
+ mysql_db_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL .
Có phžp :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
40
int mysql_db_query(string database, string query, int
[link_identifier]);
Trong Ÿã :
- string database : TÂȘn cÂŹ sĂ« dĂ· liÖu c©u lÖnh SQL sÏ thĂčc hiÖn trÂȘn Ÿã.
- string query : C©u lÖnh SQL cÇn thĂčc hiÖn .
- link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect()
H”m n”y chØ rĂą c©u lÖnh ¼−üc thĂčc hiÖn trÂȘn cÂŹ sĂ« dĂ· liÖu n”o nÂȘn
tr−íc Ÿã kh«ng cÇn thĂčc hiÖn h”m mysql_select_db();
+mysql_insert_id() :
H”m lÊy giž trÞ ¼−üc sinh ra tĂ” c©u truy vÊn INSERT trĂ­c
Có phžp :
int mysql_insert_id([link_identifier]) ;
trong Ÿã:
int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m
mysql_connect() .
H”m n”y tr¶ vÒ giž trÞ id ¼−üc sinh ra trong cĂ©t AUTO_INCREMENT
bĂ«i c©u truy vÊn tr−íc Ÿã. §iÒu n”y chØ cĂŁ tžc dĂŽng trÂȘn link_identifier ¼−üc
chØ ra trong h”m, nÕu gĂ€i h”m trÂȘn m” kh«ng chØ ¼Þnh tham sĂš link_identifier
th× liÂȘn kÕt ¼−üc mĂ« cuĂši cĂŻng sÏ ¼−üc chØ ¼Þnh.
H”m mysql_insert_id() tr¶ vÒ giž trÞ 0 nÕu c©u truy vÊn tr−íc Ÿã kh«ng sinh
ra mĂ©t giž trÞ AUTO_INCREMENT. NÕu ta muĂšn giĂ· lÂči giž trÞ cho lÇn sau,
th× ph¶i gĂ€i h”m n”y ngay sau c©u truy vÊn sinh ra giž trÞ .
+ mysql_fetch_row() :
H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči vĂ­i chØ sĂš l”
sĂš thĂž tĂč cña cžc tr−ĂȘng (chØ sĂš bŸt ¼Çu tĂ” 0). Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi
tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy
xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt : tÂȘn_m¶ng[sĂš thĂž tĂč]
Có phžp :
array mysql_fetch_row( int result_identifier);
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
41
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
VÝ dî :
<?php
$mysql = “select id, name from ds_thanhvien”; // cau lenh SQL
$link = mysql_connect($host, $user, $password); //lay ma
mysql_select_db($database_name, $link);
$result = mysql_query($mysql ,$link);
while ($row = mysql_fetch_row($result))
{
echo $row[0] ;
echo $row[1];
}
?>
+ mysql_fetch_array() :
H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči, sau Ÿã h”m
sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ
gi¾ trÞ false.
Có phžp :
array mysql_fetch_array( int result_identifier [, int result_type] );
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
§Ó truy xuÊt ¼Õn cžc th”nh phÇn cña cĂ©t :
tÂȘn_biÕn_m¶ng[“tÂȘn_trĂȘng”];
result_type l” mĂ©t h»ng sĂš cĂŁ thÓ nhËn cžc giž trÞ sau:
-MYSQL_NUM : chØ tr¶ lÂči mĂ©t m¶ng chĂža cžc chØ sĂš l” sĂš (giĂšng
nh− h”m mysql_fetch_row() )
-MYSQL_ASSOC: chØ tr¶ lÂči mĂ©t m¶ng liÂȘn kÕt
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
42
-MYSQL_BOTH : tr¶ lÂči m¶ng chĂža ÂźĂčng cžc chØ sĂš gĂ„m c¶ cžc con
sĂš v” chØ sĂš liÂȘn kÕt .
H”m n”y l” sĂč mĂ« rĂ©ng cña h”m mysql_fetch_row(). NĂŁ cho phÐp truy
cËp tr−ĂȘng dĂ· liÖu cña m¶ng kÕt qu¶ kh«ng chØ th«ng qua cžc chØ sĂš l” cžc sĂš
m” chĂłng cĂŁ thÓ l” tÂȘn cña cžc tr−ĂȘng dĂ· liÖu. §iÒu n”y l”m cho viÖc lËp
tr×nh Ÿn gi¶n v” chÝnh xžc hÂŹn.
VÝ dî:
<?php
$mysql = “select id, name from ds_thanhvien”;
$link = mysql_connect($host, $user, $password);
$result = mysql_db_query(“php”, $mysql);
while ($row = mysql_fetch_array($result)) {
echo “user_id: “. $row[“id”] .“<BR>n”;
echo “user_id: “. $row[0] .“<BR>n”;
echo “user_name: “. $row[“name”] .“<BR>n”;
echo “user_name: “. $row[1] .“<BR>n”;
}
mysql_free_result ($result);
?>
+ mysql_fetch_object() : H”m tr¶ vÒ mĂ©t ŸÚi t−üng l” giž trÞ cña mĂ©t b¶ng ghi
hiÖn thĂȘi. Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši
cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt
tÂȘn_object->tÂȘn_cĂ©t .
Có phžp :
object mysql_fetch_object(int result_identifier);
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
VÝ dî :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
43
<?php
$mysql = “select id, name from ds_thanhvien”;
$link = mysql_connect($host, $user, $password);
$result = mysql_db_query(“php”, $mysql);
while ($row = mysql_fetch_object($result)) {
echo $row->id ;
echo $row->name;
}
?>
+mysql_fetch_assoc() :lÊy vÒ mĂ©t dßng kÕt qu¶ nh− l” mĂ©t m¶ng liÂȘn
kÕt .
có phžp: array mysql_fetch_assoc(int result_identifier)
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query()
hoÆc mysql_db_query() .
H”m tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i mĂ©t b¶n ghi ¼−üc lÊy vÒ v” tr¶ lÂči
FALSE nÕu kh«ng cĂŁ b¶n ghi n”o. H”m n”y t−¬ng ¼−¬ng vĂ­i h”m
array mysql_fetch_array() víi tham sÚ result_type l” : MYSQL_ASSOC
vÝ dî :
<?php
$mysql = “select id, name from ds_thanhvien”;
$link = mysql_connect($host, $user, $password);
$result = mysql_db_query(“php”, $mysql);
while ($row = mysql_fetch_assoc($result)) {
echo $row[“id”];
echo $row[“name”];
}
?>
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
44
+mysql_data_seek()
Di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (cĂŁ ¼−üc sau khi c©u truy vÊn
SELECT ¼−üc thĂčc hiÖn)
Có phžp: bool mysql_data_seek(int result_identifier, int row_number);
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
row_number l” chØ sĂš cña b¶n ghi m” cÇn ¼Æt con trĂĄ v”o .
H”m tr¶ vÒ true nÕu th”nh c«ng, false nÕu lçi .
H”m n”y sÏ di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (¼−üc chØ rĂą bĂ«i
tham ŸÚi result_identifier) ¼Õn dßng cĂŁ m· b»ng tham ŸÚi row_number.
Cžc dßng trong tËp kÕt qu¶ ¼−üc bŸt ¼Çu tĂ” 0
VÝ dî:
<?php
$link = mysql_pconnect ($host, $user, $password)
or die ("Could not connect");
$query = "SELECT last_name, first_name FROM friends";
$result = mysql_db_query (“php”,$query)
or die ("Query failed");
# fetch rows in reverse order
for ($i = mysql_num_rows ($result) - 1; $i >=0; $i--) {
if (! Mysql_data_seek ($result, $i)) {
printf ("Cannot seek to row %dn", $i);
continue;
}
if(!($row = mysql_fetch_object ($result)))
continue;
printf ("%s %s<BR>n", $row->last_name, $row->first_name);
}
mysql_free_result ($result);
?>
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
45
+ mysql_num_rows() :tr¶ lÂči sĂš dßng trong result_identifier (nÂŹi chĂža kÕt
qu¶ cña c©u lÖnh SQL Ÿ· ¼−üc thĂčc hiÖn)
có phžp: mysql_num_rows(int result_identifier) ;
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
+mysql_affected_rows()
có phžp : int mysql_affected_rows(int [link_identifier]) ;
Trong Ÿã :int link_identifier l” m· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn
trong h”m mysql_select_db() tr−íc Ÿã .
H”m tr¶ vÒ sĂš dßng Ÿ· bÞ tžc Ÿéng bĂ«i mĂ©t c©u truy vÊn SQL :INSERT,
UPDATE, DELETE tr−íc ¼ã theo tham sù link_identifier. NÕu
link_identifier kh«ng ¼−üc chØ ¼Þnh th× m· kÕt nĂši tr−íc Ÿã sÏ ¼−üc chØ ¼Þnh.
ChĂł Ăœ :
- NÕu c©u lÖnh SQL tr−íc Ÿã l” DELETE m” kh«ng cĂŁ mÖnh ¼Ò WHERE th×
to”n bĂ© cžc b¶n ghi trong b¶ng Ÿ· bÞ xož nh−ng h”m mysql_affected_rows()
sÏ tr¶ vÒ gižn trÞ 0.
-H”m n”y kh«ng cĂŁ tžc dĂŽng ŸÚi vĂ­i c©u lÖnh truy vÊn SELECT. §Ó lÊy ¼−üc
sĂš dßng tr¶ vÒ (sĂš dßng Ÿ· bÞ tžc Ÿéng) bĂ«i c©u lÖnh SELECT ta dĂŻng
h”m mysql_num_rows().
+mysql_result() : lÊy dĂ· liÖu tĂ” result_identifier
có phžp : mixed mysql_result(int result_identifier, int row, mixed [field]);
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
row l” b¶n ghi m” ta sÏ lÊy dĂ· liÖu
field l” tr−ĂȘng trong dßng row m” ta sÏ lÊy dĂ· liÖu .
Cžc tham sĂš result_identifier v” row ph¶i cĂŁ, cßn tham field l” tĂŻy
chĂ€n. H”m sÏ tr¶ lÂči cžc nĂ©i dung cña dßng row v” cĂ©t field tĂ” tËp kÕt qu¶
¼−üc chØ ¼Þnh bĂ«i biÕn result_identifier. NÕu ŸÚi sĂš field kh«ng ¼−üc chØ
¼Þnh rĂą th× tr−ĂȘng tiÕp theo cña b¶n ghi sÏ ¼−üc tr¶ vÒ .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
46
VÝ dî:
<?php
$mysql = “select id, name from ds_thanhvien”;
$link = mysql_connect($host, $user, $password);
$result = mysql_db_query(“php”, $mysql);
echo “ mysql_result($result, 0, “id”) <BR>n”;
echo “ mysql_result($result, 0, “name”) <BR>n”;
?>
+mysql_free_result() : H”m gi¶i phĂŁng vĂŻng bĂ© nhĂ­ ¼−üc liÂȘn kÕt vĂ­i
result_identifier .
có phžp: mysql_free_result(int result_identifier) ;
Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(),
mysql_db_query(), mysql_list_tables(), mysql_list_dbs() .
H”m n”y chØ ¼−üc dĂŻng nÕu nh− bÂčn Ÿžnh giž thÊy r»ng kÞch b¶n cña
bÂčn sö dĂŽng quž nhiÒu bĂ© nhĂ­ khi Âźang chÂčy. GĂ€i h”m n”y trÂȘn mĂ©t tr×nh xö
lĂœ kÕt qu¶ sÏ gi¶i phĂŁng to”n bĂ© dĂ· liÖu liÂȘn kÕt trong bĂ© nhĂ­ .
Ngo”i ra cßn cžc h”m khžc:
string mysql_tablename (int result_identifier, int i)
H”m tr¶ lÂči tÂȘn cña b¶ng/csdl tÂči chØ sĂš i trong result_identifier.
string mysql_field_name (int result_identifier, int field_index)
H”m tr¶ lÂči tÂȘn cña tr−ĂȘng tÂči vÞ trÝ field_index trong m· result_identifier
int mysql_list_dbs ([int link_identifier])
H”m tr¶ lÂči mĂ©t result_identifier l” danh sžch biÕn CSDL trÂȘn MySQL Server
nÕu th”nh c«ng, lçi tr¶ vÒ false .
int mysql_list_tables (string database [, int link_identifier])
H”m tr¶ vÒ danh sžch tÊt c¶ c©c b¶ng trong mĂ©t CSDL MySQL, th”nh c«ng
tr¶ vÒ mĂ©t result identifier, giž trÞ false nÕu cĂŁ lçi .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
47
int mysql_list_fields (string database_name, string table_name [, int
link_identifier])
H”m tr¶ vÒ th«ng tin liÂȘn quan ¼Õn mĂ©t b¶ng dĂ· liÖu.
int mysql_num_fields (int result_identifier)
Tr¶ vÒ sĂš tr−ĂȘng trong tËp kÕt qu¶ .
int mysql_num_rows (int result_identifier)
Tr¶ vÒ sĂš b¶n ghi trong tËp kÕt qu¶, h”m n”y chØ cĂŁ giž ŸÚi vĂ­i cžc c©u lÖnh
SELECT ,¼Ó lÊy lÂči sĂš b¶n ghi ¼−üc tr¶ lÂči tĂ” cžc lÖnh :INSERT, UPDATE
hoÆc DELETE, dïng mysql_affected_rows().
string mysql_field_type (int result_identifier, int field_index)
H”m tr¶ vÒ kiÓu dĂ· liÖu cña tr−ĂȘng tÂči vÞ trÝ field_index trong m·
result_identifier .
int mysql_field_len (int result_identifier, int field_offset)
H”m tr¶ vÒ Ÿé d”i cña tr−ĂȘng ¼−üc chØ ¼Þnh th«ng qua tham sĂš field_offset .
array mysql_fetch_lengths (int result_identifier)
tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i cžc Ÿé d”i cña mçi tr−ĂȘng trong b¶n ghi ¼−üc
lÊy vÒ bĂ«i h”m mysql_fetch_row() hoÆc false nÕu cĂŁ lçi.
int mysql_errno ([int link_identifier])
H”m tr¶ vÒ m· lçi tĂ” h”m thao tžc CSDL MySQL tr−íc ,tr¶ vÒ giž trÞ 0 nÕu
kh«ng cã lçi .
string mysql_error ([int link_identifier])
H”m tr¶ vÒ x©u th«ng bžo lçi tĂ” h”m thao tžc CSDL MySQL tr−íc, tr¶ vÒ
x©u rçng nÕu kh«ng cĂŁ lçi .
object mysql_fetch_field (int result_identifier [, int field_offset])
LÊy th«ng tin vÒ trĂȘng tĂ” tËp kÕt qu¶ rĂ„i tr¶ lÂči nh mĂ©t ŸÚi t−üng.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
48
XI. Session v” Cookie
1. Session l” g× ?
HTTP l” giao thĂžc kh«ng ¼−üc x©y dĂčng theo cžch ¼Ó cĂŁ thÓ lu giĂ· ¼−üc
trÂčng thži giĂ·a hai lÇn giao dÞch. Khi mĂ©t ng−ĂȘi dĂŻng yÂȘu cÇu truy nhËp mĂ©t
trang Web, rĂ„i sau Ÿã ng−ĂȘi dĂŻng n”y lÂči tiÕp tĂŽc yÂȘu cÇu truy nhËp ŸÚi vĂ­i
trang Web khžc th× HTTP kh«ng thÓ biÕt ¼−üc r»ng Ÿã l” hai yÂȘu cÇu tĂ” cĂŻng
mĂ©t ng−ĂȘi dĂŻng.
Ăœ tâˆ’Ă«ng cña viÖc ÂźiÒu khiÓn phiÂȘn l”m viÖc l” cĂŁ thÓ l−u vÕt cña mĂ©t ng−ĂȘi
dĂŻng trong suĂšt mĂ©t phiÂȘn l”m viÖc.
NÕu chĂłng ta l”m ¼−üc ÂźiÒu n”y th× sÏ dÔ d”ng cung cÊp mĂ©t truy nhËp cho
ng−ĂȘi dĂŻng, tĂ” Ÿã ta cĂŁ thÓ l−u vÕt trÂčng thži cña ng−ĂȘi dĂŻng v” cĂŁ thÓ thĂčc
hiÖn viÖc mua bžn trÂȘn mÂčng.
Session trong PHP ¼−üc ÂźiÒu khiÓn bĂ«i mĂ©t giž trÞ ID duy nhÊt gĂ€i l”
“sessionID”, giž trÞ n”y sÏ ¼−üc tĂč Ÿéng sinh ra v” m· hĂŁa. SessionID ¼−üc
sinh ra bĂ«i PHP v” ¼−üc l−u trĂ· Ă« phÝa client trong suĂšt mĂ©t phiÂȘn giao dÞch.
NĂŁ cĂŁ thÓ ¼−üc l−u trĂ· trÂȘn cžc Cookie Ă« mžy ng−ĂȘi dĂŻng hay truyÒn lÂȘn cžc
URL.
SessionID cĂŁ tžc dĂŽng nh− mĂ©t khož ¼Ó bÂčn cĂŁ thÓ Ÿšng kĂœ nhĂ·ng biÕn ¼Æc
biÖt gĂ€i l” biÕn session. NĂ©i dung cña nhĂ·ng biÕn n”y ¼−üc chĂža trÂȘn Server.
SessionID l” nhĂ·ng th«ng tin chØ thÊy ¼−üc Ă« phÝa client. NÕu tÂči thĂȘi ÂźiÓm
n”o Ÿã cña mĂ©t kÕt nĂši ¼Õn trang Web cña bÂčn, sessionID cĂŁ thÓ thÊy ¼−üc
trÂȘn cookie hay URL, bÂčn cĂŁ thÓ truy nhËp nhĂ·ng biÕn session chĂž trÂȘn
Server Ă« phiÂȘn l”m viÖc Ÿã.
2) Cookie l” g× ?
Cookie l” nhĂ·ng mÈu tin nhĂĄ m” trang script cĂŁ thÓ chĂža trÂȘn cžc mžy khžch
(client). BÂčn cĂŁ thÓ thiÕt lËp mĂ©t cookie trÂȘn mĂ©t mžy ng−ĂȘi dĂŻng b»ng cžch
göi mĂ©t “HTTP header” cĂŁ chĂža dĂ· liÖu theo dÂčng sau:
Set-Cookie:Name=VALUE;[expires=DATE;][path=PATH;]
[domain=DOMAIN_NAME;][secure]
c©u lÖnh n”y sÏ tÂčo ra mĂ©t cookie cĂŁ tÂȘn gĂ€i l” NAME vĂ­i giž trÞ l” VALUE.
Tr−ĂȘng expires sÏ thiÕt lËp ng”y m” cookie sÏ hÕt hiÖu lĂčc, path v” domain
cĂŁ thÓ ¼−üc sö dĂŽng ¼Ó chØ ¼Þnh cžc URL (nÂŹi m” cookie sÏ ¼−üc göi Âźi). TĂ”
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
49
khož secure cĂŁ nghÜa l” cookie sÏ kh«ng göi Âźi trÂȘn quž mĂ©t kÕt nĂši HTTP
chuÈn.
Khi mĂ©t browser kÕt nĂši tĂ­i mĂ©t URL, trĂ­c tiÂȘn nĂŁ kiÓm tra cžc cookie Ÿ·
¼−üc l−u trĂ· trÂȘn mžy. NÕu cĂŁ bÊt k× mĂ©t cookie n”o cĂŁ liÂȘn quan ¼Õn ¼Þa chØ
URL vĂ”a ¼−üc kÕt nĂši, chĂłng sÏ ¼−üc truyÒn trĂ« lÂči cho server.
3) ThiÕt lËp cžc cookie tĂ” PHP
Ta cĂŁ thÓ thiÕt lËp cžc cookie trong PHP b»ng cžch sö dĂŽng h”m:
int setcookie (string name [,string value [,int expire [,string path [,string
domain [, int secure]]]]]);
NhĂ·ng tham ŸÚi cña h”m t−¬ng Ăžng vĂ­i nhĂ·ng tham ŸÚi cña Set-Cookie
header Ă« trÂȘn.
NÕu ta thiÕt lËp cookie nh− sau:
setcookie ("TestCookie", "Test Value");
th× khi ng−ĂȘi dĂŻng ¼Õn thšm trang kÕ tiÕp trong site cña ta (hoÆc reload trang
hiÖn tÂči) ta sÏ ph¶i truy nhËp v”o biÕn vĂ­i tÂȘn l” "TestCookie" cĂŁ chĂža giž trÞ
l” "Test Value", ta chØ cĂŁ thÓ truy nhËp tĂ­i nĂŁ th«ng qua biÕn m¶ng
$HTTP_COOKIE_VARS [] cña PHP .
Ta cĂŁ thÓ xož mĂ©t cookie b»ng cžch gĂ€i lÂči h”m setcookie() vĂ­i tham ŸÚi nh−
sau:
tÂȘn cña cookie l” tÂȘn cña cookie cÇn xož v” kh«ng cĂŁ tr−ĂȘng giž trÞ.
4) Sö dĂŽng kÕt hĂźp cookie vĂ­i session
§Úi vĂ­i cookie cĂŁ mĂ©t sĂš vÊn ¼Ò sau Ÿ©y:
MĂ©t v”i webrowser kh«ng thÓ truy cËp ¼−üc tĂ­i cžc cookie (kh«ng hç trĂź
cookie) v” mĂ©t sĂš ng−ĂȘi dĂŻng kh«ng cĂŁ cžc cookie trÂȘn browser cña hĂ€. §©y
l” lĂœ do ¼Ó PHP sö dĂŽng c¶ hai cžch thĂžc :cookie v” URL method.
Khi sö dĂŽng PHP session, ta sÏ kh«ng ph¶i thiÕt lËp cžc cookie, nhĂ·ng h”m
session sÏ l−u giĂ· nhĂ·ng th«ng tin n”y cho chĂłng ta.
§Ó xem nĂ©i dung cña cžc cookie Ÿ· ¼−üc thiÕt lËp bĂ«i session ta sö dĂŽng
h”m:
session_get_cookie_params(). H”m n”y sÏ tr¶ vÒ mĂ©t m¶ng liÂȘn kÕt m” cžc
phÇn tö cña m¶ng chĂža cžc th«ng tin nh−: lifetime, path, domain,.. .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
50
§Ó thiÕt lËp cžc tham sĂš cho session cookie ta dĂŻng h”m:
void session_set_cookie_params (int lifetime [, string path [, string
domain]])
5) L−u giĂ· sessionID
PHP sÏ sö dĂŽng cžc cookie mÆc ¼Þnh cĂŻng vĂ­i session. NÕu cĂŁ thÓ ¼−üc, mĂ©t
cookie sÏ ¼−üc thiÕt lËp chþa SessionID.
MĂ©t cžch ¼Ó sö dĂŽng cžc SessionID trÂȘn URL Ÿã l” dÞch PHP cĂŻng vĂ­i lĂča
chĂ€n –enable-tran-sid.
Cžch nĂ·a l” ta cĂŁ thÓ Âźa sessionID v”o trong thÎ link. SessionID ¼−üc chĂža
trong h»ng SID. §Ó l”m ¼−üc ÂźiÒu n”y, ta thÂȘm v”o cuĂši thÎ link h»ng SID
¼Ó dĂŻng nĂŁ nh− l” ph−¬ng thĂžc GET.
VÝ dî:
<A HREF = “link.php?<?=SID?>”>
H»ng SID l”m viÖc ¼−üc nh− trÂȘn chØ khi ta cÊu h×nh PHP cĂŻng vĂ­i
--enable-track-vars.
6) ThĂčc thi nhĂ·ng phiÂȘn l”m viÖc Ÿn gi¶n.
NhĂ·ng b−íc cÂŹ b¶n cña viÖc sö dĂŽng session:
+ BŸt ¼Çu mĂ©t Session
+ §šng kĂœ nhĂ·ng biÕn Session
+ Sö dĂŽng biÕn Session
+ HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session
6.1 BŸt ¼Çu mĂ©t Session
Cžch Ÿn gi¶n nhÊt ¼Ó bŸt ¼Çu mĂ©t Session l” dĂŻng h”m:
Bool Session_start();
H”m n”y sÏ kiÓm tra xem Ÿ· cĂŁ mĂ©t Session ID n”o Ÿ· ¼−üc tÂčo ra hay ch−a.
NÕu ch−a th× nĂŁ sÏ tÂčo ra mĂ©t Session ID, cßn nÕu Ÿ· tĂ„n tÂči mĂ©t Session ID
th× thĂčc chÊt nĂŁ chØ lÊy ra nhĂ·ng biÕn Session ¼Ó ta cĂŁ thÓ dĂŻng nĂŁ. H”m tr¶
vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
51
ChĂłng ta cĂČng cĂŁ thÓ bŸt ¼Çu mĂ©t Session b»ng cžch cÊu h×nh PHP ¼Ó nĂŁ tĂč
Ÿéng bŸt ¼Çu khi cĂŁ ai Ÿã thšm trang Web cña ta. §iÒu n”y cĂŁ thÓ l”m ¼−üc
nÕu ta chĂ€n session. auto_start trong file c:Windowsphp.ini
MĂ©t Session cĂČng sÏ ¼−üc bŸt ¼Çu khi ta Ÿšng kĂœ mĂ©t biÕn Session.
6.2 §šng kĂœ nhĂ·ng biÕn Session
§Ó cho mĂ©t biÕn cĂŁ thÓ l−u dÊu th«ng tin tĂ” mĂ©t trang script n”y sang trang
script khžc, ta cÇn ph¶i Ÿšng kĂœ nĂŁ b»ng cžch gĂ€i h”m:
bool session_register(mixed VarName [,mixed...]);
ViÖc Ÿšng kĂœ n”y sÏ l−u trĂ· tÂȘn biÕn v” ghi giž trÞ cña biÕn cho ¼Õn khi phiÂȘn
giao dÞch kÕt thĂłc hoÆc khi ta huĂ» bĂĄ (deregister) viÖc Ÿšng kĂœ biÕn Ÿã.
VÝ dî:
§Ó Ÿšng kĂœ biÕn $Var_name ta viÕt nh− sau:
$Var_name= 5;
session_register(“Var_name”);// kh«ng nÂȘn sö dĂŽng kĂœ tĂč $ trong Ÿšng kĂœ
mĂ©t biÕn
6.3 Sö dĂŽng biÕn Session
§Ó Âźa mĂ©t biÕn Session v”o trong phÂčm vi m” nĂŁ cĂŁ thÓ ¼−üc sö dĂŽng, ta cÇn
ph¶i khĂ«i tÂčo mĂ©t Session b»ng mĂ©t trong nhĂ·ng cžch Ÿ· nÂȘu trÂȘn.
Sau Ÿã, ta cĂŁ thÓ truy cËp ¼−üc nhĂ·ng biÕn n”y. NÕu Ÿ· Ÿšng kĂœ biÕn n”y l”
to”n cĂŽc b»ng cžch sö dĂŽng h”m register_global(), th× ta cĂŁ thÓ truy nhËp
biÕn b×nh th−ĂȘng th«ng qua tÂȘn biÕn, vÝ dĂŽ : $Var_name ;
NÕu kh«ng khai bžo biÕn l” to”n cĂŽc th× ta ph¶i truy nhËp nhĂ·ng biÕn Session
th«ng qua m¶ng liÂȘn kÕt $HTTP_SESSION_VARS(“Var_name”);
§Ó kiÓm tra xem mĂ©t biÕn Ÿ· ¼−üc Ÿšng kĂœ l” biÕn Session hay ch−a ta dĂŻng
h”m: bool session_is_registered (string name);
H”m n”y tr¶ vÒ giž trÞ TRUE nÕu biÕn Ÿ· ¼−üc Ÿšng kĂœ, ng−üc lÂči tr¶ vÒ
gi¾ trÞ FALSE.
Ta cĂČng cĂŁ thÓ kiÓm tra mĂ©t biÕn cĂŁ l” biÕn Session b»ng cžch kiÓm tra
m¶ng liÂȘn kÕt $HTTP_SESSION_VARS() vÒ sĂč tĂ„n tÂči cña biÕn.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
52
6.4 HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session
Khi muĂšn kÕt thĂłc mĂ©t biÕn Session, ta cĂŁ thÓ huĂ» bĂĄ Ÿšng kĂœ cña biÕn Ÿã
b»ng h”m : bool session_unregister (string name) ;
Trong Ÿã: name l” tÂȘn biÕn ta muĂšn huĂ» Ÿšng kĂœ (tÂȘn n”y kh«ng cÇn cĂŁ kĂœ
tĂč $)
H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE.
H”m n”y chØ cĂŁ thÓ huĂ» Ÿšng kĂœ cña mĂ©t biÕn Session tÂči mĂ©t thĂȘi ÂźiÓm.
§Ó huĂ» tÊt c¶ cžc biÕn Session hiÖn tÂči, ta dĂŻng h”m: void session _unset ( ) ;
§Ó kÕt thĂłc mĂ©t Session ta dĂŻng h”m:s
bool session_destroy () ;
H”m n”y sÏ xož Âźi SessionID v” hñy tÊt c¶ nhĂ·ng dĂ· liÖu liÂȘn quan ¼Õn
Session n”y. H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng, ng−üc lÂči tr¶ vÒ giž trÞ
FALSE.
Ta nÂȘn hñy tÊt c¶ cžc biÕn Session tr−íc khi kÕt thĂłc mĂ©t Session.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
53
Ch−¬ng III : Ph−¬ng ph¾p Fast Template trong
PHP
I. C¾c kÜ thuËt mÉu phé biÕn
Cžc mÉu cĂŁ thÓ ¼−üc dĂŻng nÕu nh− bÂčn Âźang thĂčc hiÖn mĂ©t site
th−ĂȘng xuyÂȘn sö dĂŽng lÂči cžc th”nh phÇn .Trong phÂčm vi cña PHP ,cžc
mÉu Ă« Ÿ©y Ăœ nĂŁi ¼Õn HTML. Kh«ng dĂŻng cžc mÉu ,mĂ©t web site phĂžc
tÂčp sÏ cĂŁ cÊu trĂłc rÊt nÆng.
§Ó gi¶i quyÕt vÊn ¼Ò trÂȘn ,nhiÒu kÜ thuËt mÉu Ÿ· tĂ„n tÂči, nhĂłng cĂŁ
thÓ hĂ·u Ých trong mĂ©t sĂš tr−ĂȘng hĂźp. ChĂłng ta giĂ­i thiÖu qua mĂ©t sĂš kÜ
thuËt ¼−üc sö dĂŽng th−ĂȘng xuyÂȘn .
Name
Code/
HTML
mixed
HTML
structure
Defined
in PHP
Advantages
Disadvantages Useful for
Embedded
PHP
Yes Yes
Fastand
easy
Leadsto unreadable
scrips, noreuse of
existing code,hardto
maintain
Quick and
Smallscripts
Separating
common
parts
Yes No
Fast and
easy,
Reuseof
certain pasts
Leadsto unreadable
scripts, often hard
to maintain
Web sites
with LOC <
1000
FastTemplate No No
Abstracts
HTML
completely
from
coding, easy
to adapt to
new needs
Complex
Web sites
with LOC >
1000
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
54
ViÖc sö dĂŽng cžc mÉu trong cžc tr×nh Ăžng dĂŽng
1. Embedded PHP
ChĂłng ta cĂŁ thÓ nhĂłng cžc c©u lÖnh PHP v”o trong HTML. MĂ©t vÝ dĂŽ
ÂźiÓn h×nh cña cžch thĂžc trÂȘn :
<HTML>
<HEAD>
<TITLE>powers</TITLE>
</HEAD>
<BODY BGCOLOR=”black” TEXT=”white”>
<H1>powers</H1>
<TABLE>
<TR>
<TH>i</TH>
<TH>i^i</TH>
</TR>
<?php
for ($i= 0 ; $i< 10 ; $i++) {
echo “<TR><TD>$i</TD><TD>”.pow($i,$i).”</TD></TR>n”;
}
?>
</TABLE>
</BODY>
</ HTML >
Ph−¬ng phžp n”y ¼−üc dĂŻng khž phĂŠ biÕn vĂ­i nhĂ·ng ng−ĂȘi bŸt ¼Çu
hĂ€c lËp tr×nh PHP. TĂ­i mĂ©t lĂłc n”o Ÿã ,nhĂ·ng ng−ĂȘi mĂ­i lËp tr×nh b»ng
ph−¬ng phžp nhĂłng tiÕn tĂ­i sĂč th”nh thÂčo Ă« cžc mĂžc cao hÂŹn, nh−ng thËt
Ÿžng tiÕc, cžch lËp tr×nh n”y lÂči ngšn c¶n ÂźiÒu Ÿã .
2. Separating common parts
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
55
MÆc dĂŻ kÜ thuËt n”y cĂŁ sö dĂŽng lÂči cžc m· code/HTML v” viÖc thay ŸÊi
cĂČng dÔ d”ng hÂŹn ,nh−ng nĂŁ vÉn thĂ”a hâˆ’Ă«ng hÇu hÕt cžc nh−üc ÂźiÓm cña
ph−¬ng ph¾p PHP nhóng .
Cžch l”m th«ng th−ĂȘng l” bŸt ¼Çu vĂ­i cžc HTML header v” footer, chĂłng
¼−üc viÕt th”nh cžc h”m. Cžc h”m n”y cĂŁ thÓ ¼−üc gĂ€i khi cÇn ¼Õn chĂłng
v” do Ÿã linh hoÂčt hÂŹn khi sö dĂŽng. SĂč thay ŸÊi cžc h”m sÏ ¼−üc ph¶n
žnh trong tÊt c¶ cžc tr−ĂȘng hĂźp.
Ta tžch vÝ dĂŽ PHP nhĂłng Ă« trÂȘn ra hai file .
TÖp prepend.inc chĂža hai h”m :hiÓn thÞ mĂ©t HTML header v” mĂ©t HTML
footer .
<?php //prepend.inc
function CommonHeader($title) {
?>
<HTML>
<HEAD>
<TITLE><?php echo $title ?></TITLE>
</HEAD>
<BODY BGCOLOR=”black” TEXT=”white”>
<H1><?php echo $title ?></H1>
<?php
}
function CommonFooter() {
?>
</TABLE>
</BODY>
</HTML>
<?php
}
?>

TÖp main.php sö dĂŽng tÖp prepend.inc
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
56
<?php include “prepend.inc”; ?>
<?php CommonHeader( “power” ); ?>
<TABLE>
<TR>
<TH>i</TH>
<TH>i^i</TH>
</TR>
<?php
for ($i= 0 ; $i< 10 ; $i++) {
echo “<TR><TD>$i</TD><TD>”.pow($i,$i).” </TD></TR>n”;
}
?>
</TABLE>
<?php CommonFooter(); ?>
3. FastTemplate
Trong phÇn n”y chĂłng ta cĂŻng t×m hiÓu vÒ ph−¬ng phžp thiÕt kÕ
Web trong PHP l” FastTemplate. §©y l” ph−¬ng phžp hay, nĂŁ ¼−üc gŸn
kÌm vĂ­i cžc gĂŁi Ăžng dĂŽng cña PHP, nĂŁ ¼−üc x©y dĂčng trong tÖp tin cĂŁ
tÂȘn class. FastTemplate.php .
MĂŽc ¼Ých cña ph−¬ng phžp n”y l” giĂłp cho ch−¬ng tr×nh viÕt b»ng PHP
cĂŁ nhiÒu giao diÖn khžc nhau trÂȘn cĂŻng mĂ©t cÂŹ sĂ« m·, v” l”m gi¶m khĂši
l−üng c«ng viÖc do ch−¬ng tr×nh ¼−üc tžch ra l”m hai phÇn : phÇn viÕt
cžc ÂźoÂčn m· (code) v” phÇn thiÕt kÕ giao diÖn cho ch−¬ng tr×nh. PhÇn
viÕt cžc ÂźoÂčn m· sÏ tÝnh tožn dĂ· liÖu v” thÓ hiÖn trÂȘn cžc trang HTML
th«ng qua cžc biÕn FastTemplate. PhÇn giao diÖn sÏ thiÕt kÕ giao diÖn
cho ch−¬ng tr×nh b»ng ng«n ngĂ· HTML. Trong phÇn n”y chĂłng ta cĂŁ thÓ
lĂ„ng v”o trang HTML cžc ng«n ngĂ· nh− Java Applet, JavaScript, ... cho
trang web thÂȘm sinh Ÿéng. ViÖc thÂȘm v”o trang HTML nhĂ·ng ÂźoÂčn m·
n”y kh«ng l”m ¶nh hâˆ’Ă«ng tĂ­i phÇn ÂźoÂčn m· PHP. Khi Ÿã, Ă« vÞ trÝ n”o
trÂȘn trang web cÇn thÓ hiÖn cžc kÕt qu¶ tÝnh tožn tĂ” ÂźoÂčn m· th× sÏ sö
dîng c¾c biÕn FastTemplate ¼Ó thÓ hiÖn.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
57
II. Ph−¬ng ph¾p FastTemplate
1. BiÕn FastTemplate
BiÕn FastTemplate l” g× ?
C¾c biÕn FastTemplate cã cÊu tróc nh− sau :
{TEN_BIEN_FASTTEMPLATE}
BiÕn ¼−üc ¼Æt trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n, tÂȘn biÕn Ă« giĂ·a, tÂȘn cĂŁ thÓ
l” chĂ· hoa hoÆc chĂ· th−ĂȘng. Tuy nhiÂȘn trong phÇn ÂźoÂčn m· PHP bÂčn
cĂČng ph¶i viÕt giĂšng nh− vËy.
2. VÞ trÝ ¼Æt biÕn FastTemplate
Cžc biÕn FastTemplatse cĂŁ thÓ ¼Æt bÊt kĂș Ÿ©u trong trang HTML. NĂŁ
cĂŁ thÓ l” biÕn thÓ hiÖn th«ng tin trÂȘn cžc trang HTML khi ¼−üc browser hiÓn
thÞ hoÆc cžc biÕn sÏ thÂȘm v”o cžc ÂźoÂčn m· HTML .
VÝ dĂŽ : ta ¼Æt tÂȘn tÖp l” : vidu_template.tpl
<HTML>
<HEAD>
<TITLE>{TITLE}</TITLE>
</HEAD>
<BODY>
{CONTENT}
</BODY>
</HTML>
Trong vÝ dĂŽ trÂȘn cĂŁ hai biÕn FastTemplate l” {TITLE} v”
{CONTENT}. BiÕn {CONTENT} sÏ thÓ hiÖn th«ng tin trÂȘn trang web khi
¼−üc hiÓn thÞ, biÕn {TITLE} ¼−üc thÂȘm v”o nh− mĂ©t th”nh phÇn cña m·
HTML .
3. MĂ©t vÝ dĂŽ minh hĂ€a
Theo vÝ dĂŽ trÂȘn chĂłng ta Ÿ· cĂŁ tÖp “vidu_template.tpl”, b©y giĂȘ chĂłng ta
Âźi x©y dĂčng ÂźoÂčn script sau :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
58
<?php
include “class.FastTemplate.php”;
# khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate
$tpl = new FastTemplate(“.”);
# §Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate
$tpl->set_filenames(array(“body” => “vidu_template.tpl ”));
# G¾n c¾c gi¾ trÞ cho biÕn FastTemplate
$tpl->assign_vars(array(
“TITLE” => “Vi du”,
“CONTENT” => “NĂ©i dung cña trang web” ));
# Cho hiÖn trang web n”y
$tpl->pparse(“body”);
?>
4. BĂšn b−íc cho mĂ©t trang web .
Trong mĂ©t script cÇn thĂčc hiÖn bĂšn bĂ­c theo thĂž tĂč sau :
B−íc 1 : Khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate
B−íc 2 : Gžn cžc tÖp chĂža m· HTML (tÖp n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng
nhÊt thiÕt l” *.htm) cho cžc phÇn tö cña m¶ng ¼−üc ¼Þnh nghÜa bĂ«i ph−¬ng
thĂžc set_filenames() ( b−íc n”y ¼−üc gĂ€i l” “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp
FastTemplate” ) .
B−íc 3 : G¾n gi¾ trÞ cho c¾c biÕn FastTemplate trong c¾c tÖp .
B−íc 4 : Cho hiÖn trang web b»ng ph−¬ng thĂžc
pparse(“tÂȘn_trang_web”)
ChĂł Ăœ :
+ B−íc 2: Trong “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate” cĂŁ thÓ
nhiÒu tÖp ¼−üc g¾n .
+ B−íc 4: Mçi lÇn gĂ€i ph−¬ng thĂžc pparse(); chØ ¼−üc mĂ©t tÖp
FastTemplate.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
59
+ Cžc b−íc 1,2,3,4 cĂŁ thÓ lÆp lÂči nhiÒu lÇn .
+ ThĂž tĂč gĂ€i ph−¬ng thĂžc pparse(); l” rÊt quan trĂ€ng v× nĂŁ ¶nh hâˆ’Ă«ng
¼Õn cžch thÓ hiÖn cña trang web.
5. KhĂši FastTemplate
Th«ng tin trÂȘn trang web cĂŁ thÓ ¼−üc thÓ hiÖn d−íi dÂčng b¶ng, vĂ­i sĂš
h”ng kh«ng xžc ¼Þnh do Ÿã FastTemplate cĂŁ hç trĂź “khĂši FastTemplate”.
KhĂši FastTemplate sÏ lÆp Âźi lÆp lÂči mĂ©t ÂźoÂčn HTML n”o Ÿã khi ¼−üc Ÿžnh
dÊu khùi. XÐt vÝ dî sau :
H·y thĂčc hiÖn phÐp tÝnh 2a
vĂ­i a = 1, ..., n. KÕt qu¶ ¼−üc thÓ hiÖn bĂ«i
mĂ©t b¶ng gĂ„m hai cĂ©t, cĂ©t giž trÞ cña a v” cĂ©t kÕt qu¶ cña phÐp tÝnh 2a
.
ChĂłng ta tÂčo tÖp
“tinh_2_mu.htm”
<html>
<head>
<title>Tinh 2 mu a</title>
</head>
<body>
<table border="1"
width="100%">
<tr>
<td width="50%">
<p align="center">Gia tri a</td>
<td width="50%">
<p align="center">Tinh 2ÂȘ</td>
</tr>
<!-- BEGIN block -->
<tr>
<td width="50%">
<p align="center">{block.GIATRI}</td>
<td width="50%">
<p align="center">{block.KETQUA}</td>
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
60
</tr>
<!-- END block -->
</table>
</body>
</html>
Ta thÊy tÖp n”y tÂčo mĂ©t b¶ng hai h”ng hai cĂ©t, h”ng trÂȘn l” tiÂȘu ¼Ò cña
cžc cĂ©t, h”ng d−íi cĂ©t thĂž nhÊt l” giž trÞ cña a v” cĂ©t thĂž hai l” kÕt qu¶ cña
phÐp tÝnh 2a
. H”ng d−íi ¼−üc bŸt ¼Çu bĂ«i khož <!-- BEGIN block --> v” kÕt
thĂłc bĂ«i khož <!-- END block-->. Hai khož n”y cho biÕt phÇn bÂȘn trong sÏ bÞ
lÆp (block Ă« Ÿ©y l” tÂȘn khož), cžc biÕn FastTemplate bÂȘn trong cĂŁ dÂčng
{tenkhoa.TEN_BEN}.
§oÂčn PHP Script sÏ nh− sau :
<?php
include "class.FastTemplate.php";
$tpl = new FastTemplate(".");
$tpl->set_filenames(array(
'tinh_2_mu_a' => 'tinh_2_mu.htm'
));
$n = 10;
for ($i = 1 ; $i <= $n ; $i++)
$tpl->assign_block_vars("block",array(
'GIATRI' => $i,
'KETQUA' => pow(2, $i)
));
$tpl->pparse("tinh_2_mu_a");
?>
KÕt qu¶ khi chÂčy ch−¬ng tr×nh nh− h×nh vÏ.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
61
PhÇn II : HÖ C„ SĂ« DĂ· LIÖU MYSQL
Ch−¬ng I. GiĂ­i thiÖu Ng«n ngĂ· MySQL
I. Giíi thiÖu chung
MySQL rÊt phĂžc tÂčp, nh−ng giao diÖn SQL trĂčc gižc v” dÓ hĂ€c. Trong
ch−¬ng n”y chĂłng ta m« t¶ khži qužt vÒ cžc lÖnh, cžc kiÓu dĂ· liÖu v” cžc
h”m m” chĂłng ta cÇn biÕn ¼Ó sö dĂŽng Mysql mĂ©t cžch cĂŁ hiÖu qu¶ v” cĂŁ
hiÖu suÊt cao.
Ch−¬ng n”y cung cÊp tÊt c¶ cžc h”m tham kh¶o trong Mysql. §Ó sö dĂŽng
ch−¬ng n”y cĂŁ hiÖu qu¶ bÂčn cĂŁ thÓ t×m ¼Õn h”ng loÂčt cžc b¶ng Ÿ· ¼−üc liÖt
kÂȘ.
Cžc −u ÂźiÓm cña MySQL:
‱ MySQL l” mĂ©t hÖ qu¶n trÞ nhĂĄ, b¶o mËt, v” rÊt dÔ sö dĂŽng, th−ĂȘng
¼−üc sö dĂŽng cho cžc Ăžng dĂŽng nhĂĄ v” trung b×nh. NĂŁ ¼−üc sö
dĂŽng cho cžc Ăžng dĂŽng client / server vĂ­i mžy chñ mÂčnh nh−
UNIX, Windows NT v” Windows 95/98, v” ¼Æc biÖt trÂȘn mžy chñ
UNIX .
‱ MySQL hç trĂź cžc ÂźiÓm v”o l” ANSI SQL92 v” ODBC mĂžc 0-2
SQL chuÈn.
‱ MySQL hç trĂź nhiÒu ng«n ngĂ· cho viÖc th«ng bžo lçi nh− : Czec,
Dutc, English, Estonian, French, German, Hungarian, Italian,
Norwegian Nynorsk, Polish, Portuguese, Spanish and Swedish.
Ng«n ngĂ· ¼−üc hç trĂź mÆc ¼Þnh cho dĂ· liÖu l” ISO-8859-1
(Latin1), muÚn thay ŸÊi ph¶i söa trong m· nguÄn .
‱ Ng«n ngĂ· lËp tr×nh sö dĂŽng viÕt cžc h”m API ¼Ó th©m nhËp cÂŹ sĂ«
dĂ· liÖu MySQL cĂŁ thÓ l” C, Perl, PHP.. .
‱ Cžc b¶ng (table) trong cÂŹ sĂ« dĂ· liÖu MySQL cĂŁ kÝch th−íc rÊt lĂ­n
v” ¼−üc l−u Ă« th− mĂŽc Datas. KÝch th−íc lĂ­n nhÊt cña mĂ©t b¶ng tĂši
thiÓu l” 4GB v” nĂŁ cßn phĂŽ thuĂ©c v” kÝch th−íc lĂ­n nhÊt cña mĂ©t
file do hÖ ÂźiÒu h”nh quy ¼Þnh .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
62
‱ CÂŹ sĂ« dĂ· liÖu MySQL rÊt dÔ qu¶n lĂœ v” cĂŁ tĂšc Ÿé xö lĂœ cao hÂŹn tĂ­i
ba bĂšn lÇn so vĂ­i cžc hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu khžc.
‱ MySQL l” mĂ©t hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu m« h×nh quan hÖ, nĂŁ cĂŁ m·
nguĂ„n mĂ«. NĂŁ ¼−üc cung cÊp miÔn phÝ trÂȘn cžc mžy chñ UNIX,
OS/2 v” c¶ trÂȘn Windows.
BÂȘn cÂčnh cžc −u ÂźiÓm trÂȘn MySQL cĂČng cĂŁ mĂ©t v”i nh−üc ÂźiÓm :
‱ MySQl kh«ng cho phÐp thĂčc hiÖn cžc c©u lÖnh SQL select truy vÊn
con. VÝ dî : SELECT deptno, ename, sal
FROM emp x
WHERE sal > (SELECT AVG(sal)
FROM emp
WHERE x.deptno = deptno)
ORDER BY deptno
‱ MySQL kh«ng hç trĂź Stored Procedures, Triggers, Transactions,
Foreign Keys, v” Views nh− cžc hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu khžc .
II .CÊu trĂłc ng«n ngĂ·
1. §−a ra mĂ©t x©u v” mĂ©t sĂš nh− thÕ n”o
MĂŽc n”y m« t¶ nhĂ·ng cžch khžc nhau ¼Ó ¼−a ra x©u v” sĂš trong Mysql. mĂŽc
n”y cĂČng bao gĂ„m nhiÒu sŸc thži v” ``gotchas'' ÂźiÒu m” bÂčn cĂŁ thÓ gÆp khi Âźi
s©u v”o cžc kiÓu cÂŹ b¶n trong Mysql.
2. X©u
X©u l” mĂ©t d·y kÝ tĂč, ¼−üc ¼Æt trong dÊu nhžy Ÿn ‘ ’ hoÆc dÊu nhžy kÐp
“ ” (nÕu chÂčy trong ph−¬ng thĂžc ANSI th× x©u chØ ¼−üc ¼Æt trong dÊu
nhžy Ÿn)
VÝ dĂŽ: ‘trĂȘi nŸng’.
“ch”o buĂŠi sžng”.
Trong mĂ©t x©u, cĂŁ sĂč kÕt hĂźp cña cžc kÝ tĂč tÂčo nÂȘn cžc kÝ tĂč ¼Æc biÖt. Mçi
kÝ tĂč ¼Æc biÖt n”y bŸt ¼Çu b»ng dÊu chÐo ng−üc (  ) ¼−üc xem nh− kÝ tĂč
escape .
Mysql nhËn biÕt cžc kÝ tĂč ¼Æc biÖt sau:
 0 : kÝ tĂč 0 trong m· ASCII.
’ : KÝ tĂč nhžy Ÿn ‘.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
63
” : KÝ tĂč nhžy kÐp “.
 b : KÝ tĂč Backspace.
n : KÝ tĂč xuĂšng dßng mĂ­i.
r : KÝ tĂč vÒ ¼Çu dßng .
t : NhÈy « (tab).
z : KÝ tĂč 26 trong m· ASCII. KÝ tĂč n”y cĂŁ thÓ ¼−üc m· hož ¼Ó ŸÞng Ă«
cuĂši file trong Windows.
 : KÝ tĂč chÐo ng−üc  .
% : KÝ tĂč % .
 _ : KÝ tĂč gÂčch d−íi _ .
chĂł Ăœ : nÕu nh− sö dĂŽng kÝ tĂč ‘%’ hoÆc kÝ tĂč gÂčch d−íi ‘ _’ trong mĂ©t sĂš
tr−ĂȘng hĂźp cĂŁ thÓ tr¶ vÒ % v”  _ chĂž kh«ng ph¶i l” % v” _ .
* cĂŁ mĂ©t sĂš cžch ¼Ó x©u gĂ„m c¶ dÊu nhžy :
- ¼Ó mĂ©t dÊu nhžy Ÿn ( ‘ ) n»m trong mĂ©t x©u ¼−üc Ÿžnh dÊu bĂ«i dÊu
nhžy Ÿn th× ph¶i viÕt l”: ‘ ‘ ’ ’ .
- ¼Ó mĂ©t dÊu nhžy kÐp ( “ ) n»m trong mĂ©t x©u ¼−üc Ÿžnh dÊu bĂ«i dÊu
nhžy Ÿn th× ph¶i viÕt l”: ‘ “ ” ’ .
- cĂŁ thÓ ¼Æt kÝ tĂč (‘’) tr−íc kÝ tĂč Ÿžnh dÊu .
- mĂ©t dÊu nhžy Ÿn trong cÆp dÊu nhžy kÐp ¼−a ra x©u chĂža dÊu nhžy
Ÿn, mĂ©t dÊu nhžy kÐp trong cÆp dÊu nhžy Ÿn ¼−a ra x©u chĂža dÊu
nhžy kÐp.
- VÝ dî :
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo',''hello';
------------------------------------------
| hello | "hello" | ""hello"" | hel'lo | 'hello |
-------------------------------------------
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", ""hello";
-------------------------------------------
| hello | 'hello' | ''hello'' | hel"lo | "hello |
-------------------------------------------
mysql> SELECT "ThisnIsnFournlines";
--------------------
| This
Is
Four
lines |
--------------------
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
64
nÕu bÂčn muĂšn chÌn dĂ· liÖu nhÞ ph©n v”o trong cĂ©t BLOB. NhĂ·ng kÝ tĂč
sau ph¶i ¼−üc thÓ hiÖn d−íi dÂčng nhĂ·ng kÝ tĂč ¼Æc biÖt :
- NUL : ASCII 0. ph¶i ¼−üc thÓ hiÖn ‘  0 ’ .
-  : ASCII 92. dÊu gÂčch ng−üc ph¶i ¼−üc thÓ hiÖn ‘  ’ .
- ’ :ASCII 39. dÊu nhžy Ÿn ph¶i ÂźĂčÂŹc thÓ hiÖn ‘ ’ ’ .
- ” : ASCII 34. dÊu nhžy kÐp ph¶i ¼−üc thÓ hiÖn ‘ ” ’.
- nÕu biÕt m· C, cĂŁ thÓ sö dĂŽng h”m CAPI l” Mysql-escape-string() ¼Ó
ESC kÝ tĂč b»ng c©u lÖnh INSERT.
- NÂȘn sö dĂŽng h”m ESC ŸÚi vĂ­i nhĂ·ng x©u chĂža kÝ tĂč ¼Æc biÖt ¼−üc liÖt
kÂȘ Ă« trÂȘn.
3. SĂš (Numbers)
S« bao gĂ„m sĂš nguyÂȘn v” sĂš thĂčc .
SĂš nguyÂȘn ¼−üc biÓu diÔn b»ng mĂ©t d·y sĂš. Cßn sĂš thĂčc sö dĂŽng dÊu
chÊm ¼Ó ph©n cžch phÇn thËp ph©n .
DÊu gÂčch d−íi ÂźĂčÂŹc ¼Æt tr−íc sĂš ¼Ó chØ sĂš ©m.
VÝ dî:
1221
0
32
VÝ dĂŽ cho sĂš thĂčc:
94.42
32032.6809e10
48.00
chĂł Ăœ : sĂš nguyÂȘn ¼−üc sö dĂŽng trong ngĂ· c¶nh sĂš thĂčc ¼−üc chuyÓn
th”nh sĂš thĂčc cĂŁ giž trÞ ngang b»ng
vÝ dî : float 0 0.0
float 56 -> 56.0
NhĂ·ng giž trÞ hÖ Hexa (hÖ 16)
Mysql hç trĂź cžc giž trÞ hÖ Hexa. Trong ngĂ· c¶nh sĂš th× chĂłng giĂšng
nh− mĂ©t sĂš nguyÂȘn. Trong ngĂ· c¶nh x©u th× chĂłng giĂšng nh− mĂ©t x©u nhÞ
ph©n m” mçi cÆp sĂš nguyÂȘn Hexa ¼−üc chuyÓn th”nh mĂ©t kÝ tĂč .
VÝ dî:
mysql> SELECT x'FF'
-> 255
mysql> SELECT 0xa0;
-> 10
mysql> select 0x5061756c;
-> Paul
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
65
Ă« vÝ dĂŽ trÂȘn khi viÕt mĂ©t sĂš d−íi dÂčng Hexa bÂčn ph¶i ÂźiÒn v”o v”o tr−íc sĂš
Ÿã chuçi ‘x’ hoÆc ‘0x’. CĂł phžp x ‘x©u Hexa’ dĂča trÂȘn ANSISQL, v” cĂł
phžp 0x dĂča trÂȘn ODBC. X©u hÖ Hexa th−ĂȘng sö dĂŽng ODBC ¼Ó ¼−a giž trÞ
cho cĂ©t BLOB CĂŁ thÓ chuyÓn mĂ©t x©u hoÆc sĂš th”nh hÖ Hexa b»ng h”m
HEX().
4. Gi¾ trÞ NULL
Giž trÞ NULL cĂŁ nghÜa l” “kh«ng cĂŁ dĂ· liÖu”(“no data”) khžc vĂ­i giž trÞ
0 ŸÚi vĂ­i kiÓu sĂš v” x©u rçng ŸÚi vĂ­i kiÓu x©u .
Trong khu«n dÂčng xuÊt hoÆc nhËp File dĂ· liÖu NULL cĂŁ thÓ ¼−üc thÓ
hiÖn b»ng ‘N’ (nh− LOAD DATA INFILE, SELECT...INTO OUTFILE).
5. TÂȘn cña CÂŹ sĂ« dĂ· liÖu, b¶ng, chØ sĂš cĂ©t v” bÝ danh
TÂȘn cña cÂŹ sĂ« dĂ· liÖu, b¶ng, chØ sĂš cĂ©t v” bÝ danh tÊt c¶ ¼Òu tu©n theo
mĂ©t qui luËt chung trong Mysql. Nh−ng chĂł Ăœ r»ng qui luËt n”y Ÿ·
¼−üc thay ŸÊi bŸt ¼Çu vĂ­i Mysql Version 3.23.6 khi chĂłng ta d−a v”o
lĂȘi chĂł thÝch cho viÖc nhËn biÕt cÂŹ sĂ« dĂ· liÖu, b¶ng v” tÂȘn cĂ©t vĂ­i dÊu ‘
‘ ’ ’ .’ ” ’sÏ l”m viÖc nhËn ra lĂȘi chĂł thÝch nÕu bÂčn chÂčy trong chÕ Ÿé
ANSI .
§Þnh danh
(Identifier)
§é d”i Cžc kÝ tĂč cho phÐp
Database
(cÂŹ sĂ« dĂ·liÖu)
64 TÊt c¶ cžc kÝ tĂč cho phÐp trong th− mĂŽc
ngoÂči trĂ” ‘/’ v” ‘.’
Table
(B¶ng)
64 TÊt c¶ cžc kÝ tĂč cho phÐp vĂ­i tÂȘn File ngoÂči
trĂ” ‘/’ v” ‘.’
Column
(CĂ©t)
64 Cho phÐp tÊt c¶ cžc kÝ tĂč
Alias
(BÝdanh)
256 Cho phÐp tÊt c¶ cžc kÝ tĂč
ChĂł Ăœ: Ă« b¶ng trÂȘn ¼Þnh danh kh«ng thÓ cĂŁ kÝ tĂč Ÿžnh dÊu, ASCII(0)
hoÆc ASCII(255) .
NÕu ¼Þnh danh l” mĂ©t tĂ” bÞ hÂčn chÕ hoÆc trong Ÿã cĂŁ chĂža cžc kÝ tĂč
¼Æc biÖt th× bÂčn ph¶i sö dĂŽng dÊu nhžy Ÿn ¼Ó chĂł thÝch khi sö dĂŽng
chĂłng .
VÝ dî: SELECT * from `select` where `select`.id > 100;
Trong phiÂȘn b¶n tr−íc cña Mysql, luËt ¼Æt tÂȘn nh− sau :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
66
- MĂ©t tÂȘn gĂ„m cžc kÝ tĂč trong b¶ng m·, cĂČng cho phÐp kÝ tĂč gÂčch d−íi
‘_’ v” ‘$’.
- TÂȘn cĂŁ thÓ bŸt ¼Çu bĂ«i tÊt c¶ cžc kÝ tĂč hĂźp phžp, trong thĂčc tÕ tÂȘn cĂŁ
thÓ bŸt ¼Çu b»ng mĂ©t sĂš (ÂźiÒu n”y khžc nhiÒu vĂ­i hÖ cÂŹ sĂ« dĂ· liÖu )tuy
nhiÂȘn tÂȘn kh«ng chØ gĂ„m mĂ©t sĂš .
- Kh«ng ¼−üc sö dĂŽng kÝ tĂč ‘.’ Trong tÂȘn bĂ«i v× kÝ tĂč Ÿã ¼−üc sö dĂŽng
¼Ó mĂ« rĂ©ng khu«n dÂčng ¼Ó truy nhËp ¼Õn cĂ©t (xem Ă« b¶ng d−íi Ÿ©y).
ChĂłng ta kh«ng nÂȘn dĂŻng nhĂ·ng tÂȘn nh− 1e bĂ«i v× mĂ©t biÓu thĂžc nh−
1e1th× rÊt mÂŹ hĂ„, nĂŁ cĂŁ thÓ ¼−üc biÂȘn dÞch l” mĂ©t biÓu thĂžc 1e1 hoÆc l”
sĂš 1e1.
Trong Mysql ta cĂŁ thÓ liÂȘn hÖ tĂ­i mĂ©t cĂ©t b»ng viÖc sö dĂŽng nhĂ·ng cžch
sau:
CĂ©t tham chiÕu Ăœ nghÜa
Col_name CĂ©t col_name tĂ” b¶ng sö dĂŽng trong c©u truy vÊn
chĂža cĂ©t vĂ­i tÂȘn n”y.
Tbl_name.col_name CĂ©t col_name tĂ” b¶ng tbl_name cña cÂŹ sĂ« dĂ· liÖu
hiÖn thĂȘi .
Db_name.tbl_name.
col_name
CĂ©t col_name tĂ” b¶ng tbl_name cña cÂŹ sĂ« dĂ· liÖu
Db_name.
‘column_name’ MĂ©t cĂ©t cĂŁ chĂža kÝ tĂč ¼Æc biÖt hoÆc tĂ” khož
BÂčn cÇn ph¶i chØ rĂą tbl_name hoÆc db_name.tbl_name ŸÚi vĂ­i nhĂ·ng cĂ©t cĂŁ
cĂŻng tÂȘn trong nhiÒu b¶ng cña cÂŹ sĂ« dĂ· liÖu, hoÆc b¶ng cĂŁ cĂŻng tÂȘn trong cžc
cÂŹ sĂ« dĂ· liÖu khžc nhau ¼Ó tržnh sĂč nhËp nh»ng .
VÝ dĂŽ : gi¶ sö mçi b¶ng T1 ,T2 chĂž mĂ©t cĂ©t C bÂčn cĂŁ thÓ lÊy C trong mĂ©t
lÖnh SELECT sö dĂŽng c¶ T1 v” T2. Trong tr−ĂȘng hĂźp n”y C nhËp nh»ng bĂ«i
v× nĂŁ kh«ng duy nhÊt giĂ·a cžc b¶ng ¼−üc sö dĂŽng trong c©u lÖnh. BÂčn ph¶i
chØ ra tÂȘn b¶ng b»ng cžch viÕt T1.C hoÆc T2.C. t−¬ng tĂč nÕu bÂčn lÊy tĂ” mĂ©t
b¶ng T trong cÂŹ sĂ« dĂ· liÖu DB1 v” tĂ” b¶ng T trong cÂŹ sĂ« dĂ· liÖu DB2, bÂčn
ph¶i tham chiÕu ¼Õn cĂ©t trong nhĂ·ng b¶ng Ÿã nh− sau : DB1.T.col_name v”
DB2.T.col_name.
CĂł phžp .Tbl_name cĂŁ nghÜa l” b¶ng Tbl_name n»m trong cÂŹ sĂ« dĂ· liÖu hiÖn
thĂȘi .cĂł phžp n”y ¼−üc chÊp nhËn cho t−¬ng thÝch ODBC bĂ«i v× mĂ©t sĂš
ch−¬ng tr×nh ODBC thÂȘm v”o ¼Çu tÂȘn b¶ng mĂ©t dÊu chÊm ‘.’
6. Ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng ŸÚi vĂ­i tÂȘn trong Mysql :
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
67
Trong Mysql tÂȘn cÂŹ sĂ« dĂ· liÖu, b¶ng trong Windows th× kh«ng ph©n biÖt chĂ·
hoa v” chĂ· th−ĂȘng, cßn trong Unix th× cĂŁ ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng .
ChĂł Ăœ : mÆc dĂŻ trong windows kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng, bÂčn
cĂČng kh«ng nÂȘn dĂŻng tÂȘn cÂŹ sĂ« dĂ· liÖu, b¶ng vĂ­i cžc tr−ĂȘng hĂźp khžc nhau
trong cĂŻng mĂ©t c©u truy vÊn .
VÝ dî :
mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1;
c©u lÖnh trÂȘn sÏ kh«ng thĂčc hiÖn ¼−üc .
TÂȘn cĂ©t kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng trong tÊt c¶ cžc tr−ĂȘng hĂźp .
BÝ danh trÂȘn b¶ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng
VÝ dî: mysql> SELECT col_name FROM tbl_name AS a
WHERE a.col_name = 1 OR A.col_name = 2;
C©u lÖnh trÂȘn sÏ kh«ng thĂčc hiÖn ¼−üc v× bÝ danh ph©n biÖt ‘a’ v” ‘A’
BÝ danh trÂȘn cĂ©t sÏ kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng.
NÕu bÂčn muĂšn truy vÊn thĂčc hiÖn ¼−üc trÂȘn b¶ng th× chÊp nhËn mĂ©t qui
−íc lu«n lu«n tÂčo ra tÂȘn cÂŹ sĂ« dĂ· liÖu v” tÂȘn b¶ng sö dĂŽng chĂ· th−ĂȘng.
MĂ©t cžch tržnh vÊn ¼Ò n”y l” sÏ bŸt ¼Çu mysql vĂ­i
-0 lower_case_table_names = 1, Theo mÆc ¼Þnh tĂŻy chĂ€n n”y l” 1 trÂȘn
Windows v” 0 trÂȘn Unix. NÕu lower_case_table_names l” 1 MySQL sÏ
chuyÓn ŸÊi tÊt c¶ cžc tÂȘn b¶ng vÒ chĂ· th−ĂȘng ,ChĂł Ăœ r»ng nÕu bÂčn thay ŸÊi
tĂŻy chĂ€n n”y, bÂčn cÇn tr−íc hÕt chuyÓn ŸÊi nhĂ·ng tÂȘn b¶ng cĂČ cña bÂčn vÒ
chĂ· th−ĂȘng tr−íc khi bŸt ¼Çu mysql.
7. BiÕn ng−ĂȘi sö dĂŽng
Mysql hĂŠ trĂź cžc biÕn riÂȘng cĂŻng vĂ­i cĂł phžp @variable name. TÂȘn biÕn bao
gĂ„m kÝ tĂč anpha t− tËp cžc kÝ tĂč v” thÂȘm vao kÝ tĂč ‘_’, ’$’, v” ‘.’
BiÕn kh«ng ph¶i khĂ«i tÂčo, NULL kh«ng xuÊt hiÖn trong biÕn, biÕn cĂŁ thÓ
chĂža sĂš nguyÂȘn thĂčc hoÆc giž trÞ x©u. TÊt c¶ cžc biÕn sÏ tĂč gi¶i phĂŁng vĂŻng
nhí khi chóng thožt ra.
BÂčn cĂŁ thÓ gžn biÓu thĂžc v”o biÕn theo cĂł phžp : @variable:=expr
VÝ dî:
select @t1:=(@t2:=1)@t3:=4,@t1,@t2,@t3;
------------------------------------------------
| @t1:=(@t2:=1)@t3:=4 | @t1 | @t2 | @t3 |
-----------------------------------------------
| 5 | 5 | 1 | 4 |
------------------------------------------------
chĂłng ta ph¶i sö dĂŽng cĂł phžp:= ¼Ó gžn biÕn, bĂ«i v× dÊu b»ng (= ) ¼−üc sö
dîng ¼Ó so s¾nh .
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
68
biÕn cĂŁ thÓ ¼−üc sö dĂŽng trong mĂ©t biÓu thĂžc l−u Ăœ r»ng ÂźiÒu n”y kh«ng
¼−üc sö dĂŽng trong ngĂ· c¶nh mĂ©t sĂš ¼−üc yÂȘu cÇu rĂą r”ng nh− trong mÖnh
¼Ò LIMIT cña lÖnh select hoÆc mÖnh ¼Ò IGNORE number LINES cña lÖnh
LOAD DATA .
chĂł Ăœ : trong lÖnh SELECT mçi biÓu thĂžc chØ nhËn mĂ©t giž trÞ khi nĂŁ ¼−üc
göi cho ng−ĂȘi dĂŻng. §iÒu n”y cĂČng Ÿóng trong mÖnh ¼Ò HAVING, GROUP
BY, ORDER BY. BÂčn kh«ng thÓ tham chiÕu tĂ­i mĂ©t biÓu thĂžc gĂ„m tËp hĂźp
c¾c biÕn trong SELECT.
VÝ dî:
SELECT (@aa:=id) AS a, (@aa3) AS b FROM table_name HAVING b=5;
C©u lÖnh trÂȘn kh«ng thĂčc hiÖn ¼−ücbĂ«i v× @aa sÏ kh«ng chĂža giž trÞ Ă« h”ng
hiÖn tÂči trĂ” phi gÝ trÞ cña id thay cho cĂ©t Ÿ· ¼−üc chÊp nhÂčn tr−íc .
8. C¾c dßng chó thÝch
Mysql cho phÐp chÌn cžc c©u chĂł thÝch v”o trong kÞch b¶n cña Mysql, khi
thĂčc hiÖn tr×nh th«ng dÞch sÏ bĂĄ qua tÊt c¶ cžc ÂźoÂčn všn b¶n l” c©u chĂł thÝch
Trong Mysql chó thÝch ¼−üc ¼Æt sau dÊu : # dßng chó thÝch
-- dßng chó thÝch
cžch viÕt n”y chØ cĂŁ tžc dĂŽng trÂȘn mĂ©t dßng .
dĂŻng cÆp kÝ hiÖu sau : /* ....*/ ¼Ó chÌn cžc c©u chĂł thÝch, loÂči chĂł thÝch n”y
¼−üc gĂ€i l” chĂł thÝch khĂši .
vÝ dĂŽ: mysql> select 11; # chĂł thÝch trÂȘn mĂ©t dßng
mysql> select 11; -- chĂł thÝch trÂȘn mĂ©t dßng
mysql> select 1 /* chó thÝch khùi*/ 1;
mysql> select 1
/*
chĂł thÝch trÂȘn nhiÒu dßng
chó thÝch khùi
*/
1;
l−u Ăœ r»ng chĂł thÝch – yÂȘu cÇu bÂčn ph¶i cĂŁ Ýt nhÊt mĂ©t dÊu cžch sau --!
MÆc dĂŻ vËy cĂŁ v”i hÂčn chÕ trong cžch ghi chĂł *..* Ÿã l”:
- kÝ tĂč nhžy Ÿn v” nhžy Ÿ«i dĂŻng ¼Ó chØ sĂč bŸt ¼Çu cña mĂ©t x©u thËm
chÝ sö dĂŽng bÂȘn trong mĂ©t chĂł thÝch nÕu trong chĂł thÝch dÊu nhžy thĂž
nhÊt kh«ng phĂŻ hĂźp vĂ­i dÊu nhžy thĂž hai th× hÖ ph©n tÝch sÏ kh«ng
nhËn ra ÂźiÓm kÕt thĂłc cña ghi chĂł.
- dÊu chÊm phÈy ( ; ) ¼−üc dĂŻng ¼Ó bžo kÕt thĂłc cña mĂ©t c©u lÖnh
Mysql v” sau dÊu ( ; ) l” sĂč bŸt ¼Çu cña c©u lÖnh tiÕp theo.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
69
Ch−¬ng II. Cžc th”nh phÇn cña My SQL
Trong phÇn n”y chĂłng ta giĂ­i thiÖu khži qužt vÒ cžc kiÓu dĂ· liÖu cña
cžc tr−ĂȘng va cžc thuĂ©c tÝnh vÒ kiÓu trong mçi loÂči dĂ· liÖu.Sau Ÿã l”
mĂ©t sĂš kiÓu b¶ng trong MySQL v” cuĂši cĂŻng l” mĂ©t sĂš h”m cÂŹ b¶n
¼−üc cung cÊp bĂ«i MySQL.
I. Cžc kiÓu dĂ· liÖu
Trong MySQL cĂŁ cžc kiÓu dĂ· liÖu sau:
KiÓu sù
KiÓu kÝ tĂč (char,varchar,Blob,Text,Enum,Set)
KiÓu x©u.
KiÓu ng”y giĂȘ (Datetime,Date,TimeStamp,Time,year)
1. KiÓu sù
KiÓu tinyint:
Khai bžo TINYINT[Cm] [UNSGNED] [ZEROFIU].§©y l” kiÓu sĂš
nguyÂȘn vĂ­i giž trÞ rÊt nhĂĄ:
-NÕu khai bžo vĂ­i tĂ” khož nusigned th× giž trÞ m” cĂ©t cĂŁ kiÓu
n”y cĂŁ thÓ n»m trong kho¶ng 0 ¼Õn 255.
-NÕu kh«ng cĂŁ tĂ” khĂŁa nusiged th× giž trÞ trong kho¶ng –128
¼Õn 127
KiÓu Smallint
Khai bžo:Smallint [Cm] [nusiged] [zerofill].§©y l” kiÓu sĂš nguyÂȘn cĂŁ
gi¾ trÞ nhá:
-NÕu l” sĂš cĂŁ dÊu th× giž trÞ n»m trong kho¶ng-32768 ¼Õn 32767
-NÕu l” sĂš kh«ng dÊu th× giž trÞ trong kho¶ng 0 ¼Õn 65536.
KiÓu Mediumint
Khai bžo :Mediumint [cm] [nusiged] [zerofill] [(m)]
-NÕucĂŁ dÊu th× giž trÞ n»m trong kho¶ng –8388608 ¼Õn
8388607.
-NÕu l” sĂš cĂŁ dÊu th× giž trÞ n»m trong kho¶ng 0 ¼Õn 16777215.
KiÓu Int:
Khai bžo:Int:[Cm] [nusiged] [zerofill]
-VĂ­i sĂš cĂŁ dÊu giž trÞ trong kho¶ng –2147483648 ¼Õn
2147483647
-VĂ­i sĂš kh«ng dÊu giž trÞ trong kho¶ng 0 ¼Õn 429467295
KiÓu Interger
Khai bžo:interger [Cm] [nusiged] [zerofill].T−¬ng tĂč kiÓu INT.
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
70
KiÓu Bigint
Khai bžo :Bigint [Cm] [nusiged] [zerofill].§©y l” kiÓu nguyÂȘn m” giž
trÞ l” rÊt lĂ­n.
-VĂ­i sĂš cĂŁ dÊu giž trÞ trong kho¶ng
–9223372036854775808 ¼Õn 9223372036854775807.
-VĂ­i sĂš kh«ng dÊu giž trÞ trong kho¶ng 0 ¼Õn
18446744073709551615
Note:tÊt c¶ cžc phÐp tožn sĂš hĂ€c sö dĂŽng sĂš cĂŁ dÊu bigint hoÆc double,
v× vËy kh«ng sö dĂŽng sĂš kh«ng dÊu ,m” giž trÞ v−üt quž sĂš nguyÂȘn lĂ­n
tĂžc l” nÕu nh©n hai sĂš nguyÂȘn lĂ­n th× giž trÞ tr¶ vÒ sÏ v−üt quž sĂš
nguyÂȘn lĂ­n cĂŁ dÊu.
KiÓu float:
Khai bžo:float (precision)[zerofill].§Úi vĂ­i sĂš thĂčc Ÿé chÝnh xžc Ÿn
th× Ÿé chÝnh xžc <24.§Úi vĂ­i sĂš thĂčc Ÿé chÝnh xžc kÐp th× Ÿé chÝnh
xžc <255.Float(x) giĂšng kiÓu double,float nh−ng cĂŹ v” sĂš chĂ· sĂš phÇn
thËp ph©n ch−a ¼−üc ¼Þnh nghÜa
Precision:sĂš chĂ· sĂš phÇn thËp ph©n m” float cĂŁ thÓ nhËn.Float
[Cm,d] [zerofill]:Ÿ©y l” sĂš thĂčc vĂ­i Ÿé chÝnh xžc kÐp vĂ­i m hiÓn thÞ Ÿé
rĂ©ng,d l” sĂš cžc chĂ· sĂš phÇn thËp ph©n.
NÕu dĂŻng float kh«ng cĂŁ ŸÚi hoÆc ŸÚi <=24,th× t−¬ng Ăžng dĂŻng
sĂš thĂčc cĂŁ Ÿé chÝnh xžc Ÿn.
Double [(Cm,d)] [zerofill]:sĂš thĂčc vĂ­i Ÿé chÝnh xžc kÐp vĂ­i m l” Ÿé
rĂ©ng, d l” sĂš chĂ· sĂš phÇn thËp ph©n.NĂ”u dĂŻng double kh«ng ŸÚi
hoÆcdĂŻng float(x) vĂ­i 25<=x<=53 thay cho mĂ©t sĂš thĂčc Ÿé chÝnh xžc
kÐp.
Double precision [(Cm,d)][zerofill]
Real [(Cm,d)][zerofill] .t−¬ng tĂč nh− sĂš double.
Decimal [(Cm,d)][zerofill] ¼−üc coi nh− mĂ©t kiÓu char,¼−üc l−u trĂ·
nh− mĂ©t x©u mçi kÝ tĂč l” mĂ©t kÝ sĂš cña giž trÞ cÇn l−u trĂ·.
Nuneric [(Cm,d)][zerofill] t−¬ng tĂč decimal.
2.KiÓu ng”y giĂȘ
2.1 Datime, Date, TimeStamp.
Cžc kiÓu Datime, Data, TimeStamp cĂŁ nhĂ·ng ¼Æc tr−ng riÂȘng nh−ng
cĂČng cĂŁ mĂši liÂȘn quan.
CĂŁ mĂ©t sĂš Y2K chĂłng ta Ÿ· tĂ”ng biÕn ŸÊi vĂ­i cžc kiÓu thĂȘi gian
kh«ng gian rĂą r”ng trÂȘn
MySQL Ÿ· gi¶i thÝch cžc ng”y cĂŻng vĂ­i giž trÞ nšm mËp mĂȘ
theo quy luËt sau:
-Giž trÞ nšm trong kho¶ng 70-69 ¼−üc chuyÓn sang nšm 2000-
Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL
71
2069
-Giž trÞ nšm trong kho¶ng 70-99 ¼−üc chuyÓn sang nšm 1970-
1999.
§ã l” v× giž trÞ nšm ta chØ ¼Ó hai chĂ· sĂš, cßn hai sĂš tr−íc mÆc
¼Þnh l” nšm 1900.§Ó l”m cho kh«ng nhÇm lÉn nšm th× ph¶I cung cÊp
giž trÞ nšm l” bĂšn sĂš.MySQL Ÿ· l”m ÂźiÒu n”y.
KiÓu datetime: §©y l” kiÓu ng”y giĂȘ ¼−üc dĂŻng khi bÂčn cÇn l−u trĂ·
th«ng tin c¶ vÒ ng”y thžng v” thĂȘi gian.Giž trÞ cña nĂŁ n»m trong
kho¶ng 1000-01-10:00:00 ¼Õn ‘9999-12-3123:59:59’
MySQL hiÓn thÞ datatime theo ¼Þnh dÂčng:
“yyyy-mm-dd hh:mm:ss” nh−ng nĂŁ cĂČng cho phÐp Ên ¼Þnh giž trÞ cho
kiÓu n”y b»ng dÂčng sĂš hoÆc x©u.
KiÓu Date ¼−üc dĂŻng khi bÂčn chØ cÇn l−u trĂ· giž trÞ ng”y thžng.
MySQL truy xuÊt v” hiÓn thÞ giž trÞ DATE vĂ­i ¼Þnh dÂčng “yyyy-
mm-dd”
Giž trÞ trong kho¶ng ‘1000-01-01’ ¼Õn ‘9999-12-31’cĂŁ thÓ Ên
Âźinh b»ng sĂš hoÆc x©u.
KiÓu TIMESTAMP [Cm]
Cung cÊp 1 kiÓu m” bÂčn cĂŁ thÓ dĂŻng ¼Ó Ÿžnh dÊu mĂ©t cžch tĂč Ÿéng
ŸÚi vĂ­i phÐp INSERT hoÆc UPDATE cĂŻng vĂ­i ng”y giĂȘ hiÖn tÂči.NÕu
cĂŁ nhiÒu cĂ©t TIMESTAMP th× chØ cĂ©t ¼Çu tiÂȘn ¼−üc cËp nhËt mĂ©t cžch
tĂč Ÿéng.
§Ó cËp nhËt v”o cĂ©t ¼Çu nh− vËy cĂČng ph¶i tho¶ m·n cžc ÂźiÒu
kiÖn sau:
-CĂ©t m” chĂža ¼−üc xžc ¼Þnh chi tiÕt trong mÖnh ¼Ò INSERT
hoÆcLOADDATAINFILE
-CĂ©t m” kh«ng xžc ¼Þnh chi tiÕt trong lÖnh UPDATE v” mĂ©t sĂš
cĂ©t khžc Ÿ· thay ŸÊi giž trÞ
-BÂčn ¼Æt chi tiÕt cĂ©t TIMESTAMP l” ng”y giĂȘ hiÖn tÂči b»ng
c¾ch Ên ¼Þnh gi¾ trÞ NULL
Cžc cĂ©t khžc cĂŁ thÓ ¼−üc ¼Æt thĂȘi gian v” ng”y thžng hiÖn tÂči.ChØ c”
vĂ­i cĂ©t giž trÞ NULL hoÆc NOW.Giž trÞ cña TIMESTAMP l” tĂ” 1970-
01-01:00:00:00.§Õn n¹m 2037 th× MySQL hiÓn thÞ TIMESTAMP theo
¼Þnh dÂčng ‘yyyy mm dd hh mm ss’
‘yyyy mm dd hh mm ss’.MySQL cĂČng cho phÐp sö dĂŽng b»ng x©u
hoÆc sù.
KiÓu TIME
MySQL ¼Þnh dÂčng giž trÞ thĂȘi gian l” ‘hh:mm:ss’ hoÆc HHH:MM:SS
NguyÂȘn nh©n m” phÇn giĂȘ cĂŁ thÓ lĂ­n hÂŹn tÂči v× kiÓu TIME kh«ng chØ
biÓu diÔn thĂȘi gian trong 1ng”y (giĂȘ ph¶i <24) m” nĂŁ cßn l” kho¶ng
thĂȘi gian giĂ·a hai sĂč kiÖn (cĂŁ thÓ >24 hoÆc thËm chÝ l” ©m).Giž trÞ cña
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql
Laptrinh ph pvamysql

More Related Content

What's hot

TĂ i liệu tá»± học Auto lisp
TĂ i liệu tá»± học Auto lispTĂ i liệu tá»± học Auto lisp
TĂ i liệu tá»± học Auto lispTrung Thanh Nguyen
 
Chuong06
Chuong06Chuong06
Chuong06na
 
Giao Trinh Excel Nang Cao
Giao Trinh Excel Nang CaoGiao Trinh Excel Nang Cao
Giao Trinh Excel Nang Caonguyentuyenkgg
 
Giao Trinh Thiet Ke Web
Giao Trinh Thiet Ke WebGiao Trinh Thiet Ke Web
Giao Trinh Thiet Ke Webguest9d60a5
 
Bai tap hp4 - sql server 2000
Bai tap   hp4 - sql server 2000Bai tap   hp4 - sql server 2000
Bai tap hp4 - sql server 2000vudung07b5
 
GiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webGiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webtuanhuy1228
 
GiĂĄo TrĂŹnh PHP & MySql căn báșŁn
GiĂĄo TrĂŹnh PHP & MySql căn báșŁnGiĂĄo TrĂŹnh PHP & MySql căn báșŁn
GiĂĄo TrĂŹnh PHP & MySql căn báșŁnTiĂȘn LĂœ Rau RĂșt
 
BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH
BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH
BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH nataliej4
 

What's hot (12)

Giao trinh html
Giao trinh htmlGiao trinh html
Giao trinh html
 
TĂ i liệu tá»± học Auto lisp
TĂ i liệu tá»± học Auto lispTĂ i liệu tá»± học Auto lisp
TĂ i liệu tá»± học Auto lisp
 
Chuong06
Chuong06Chuong06
Chuong06
 
Giao Trinh Excel Nang Cao
Giao Trinh Excel Nang CaoGiao Trinh Excel Nang Cao
Giao Trinh Excel Nang Cao
 
Giao Trinh Thiet Ke Web
Giao Trinh Thiet Ke WebGiao Trinh Thiet Ke Web
Giao Trinh Thiet Ke Web
 
Chuong1
Chuong1Chuong1
Chuong1
 
Bai tap hp4 - sql server 2000
Bai tap   hp4 - sql server 2000Bai tap   hp4 - sql server 2000
Bai tap hp4 - sql server 2000
 
Mongodb
MongodbMongodb
Mongodb
 
GiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webGiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż web
 
GiĂĄo TrĂŹnh PHP & MySql căn báșŁn
GiĂĄo TrĂŹnh PHP & MySql căn báșŁnGiĂĄo TrĂŹnh PHP & MySql căn báșŁn
GiĂĄo TrĂŹnh PHP & MySql căn báșŁn
 
Bai1 kdl
Bai1 kdlBai1 kdl
Bai1 kdl
 
BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH
BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH
BÀI GIáșąNG NGÔN NGở LáșŹP TRÌNH
 

Similar to Laptrinh ph pvamysql

Tai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysqlTai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysqlJohn Phan
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlGiang Nguyễn
 
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.comTai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.comDang Thao
 
Lap trinh php va my sql
Lap trinh php va my sqlLap trinh php va my sql
Lap trinh php va my sqlhieusy
 
GiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webGiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webkhoagtvt
 
Tim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongTim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongVu Trung Kien
 
Giao trinh thiet_ke_web html
Giao trinh thiet_ke_web htmlGiao trinh thiet_ke_web html
Giao trinh thiet_ke_web htmlHoĂ ng TrĂ­ Phan
 
Giao trinh html
Giao trinh htmlGiao trinh html
Giao trinh htmlkimaruta
 
Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Cu Sock
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlGiang Nguyễn
 
bctntlvn (52).pdf
bctntlvn (52).pdfbctntlvn (52).pdf
bctntlvn (52).pdfLuanvan84
 
PHP cĂł thể lĂ m gĂŹ? 9 Thứ thĂș vị cĂł thể lĂ m với PHP
PHP cĂł thể lĂ m gĂŹ?  9 Thứ thĂș vị cĂł thể lĂ m với PHPPHP cĂł thể lĂ m gĂŹ?  9 Thứ thĂș vị cĂł thể lĂ m với PHP
PHP cĂł thể lĂ m gĂŹ? 9 Thứ thĂș vị cĂł thể lĂ m với PHPNIIT - ICT HĂ  Nội
 
HÆ°ÆĄÌng DĂąÌƒn Php
HÆ°ÆĄÌng DĂąÌƒn  PhpHÆ°ÆĄÌng DĂąÌƒn  Php
HÆ°ÆĄÌng DĂąÌƒn Phpxeroxk
 

Similar to Laptrinh ph pvamysql (20)

Tai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysqlTai lieu-laptrinh ph-pvamysql
Tai lieu-laptrinh ph-pvamysql
 
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysqlHaiphongit.com.tai lieu-laptrinh ph-pvamysql
Haiphongit.com.tai lieu-laptrinh ph-pvamysql
 
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.comTai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
Tai lieu-laptrinh ph-pvamysql - bachkhoaaptech.com
 
Lap trinh php va my sql
Lap trinh php va my sqlLap trinh php va my sql
Lap trinh php va my sql
 
GiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż webGiĂĄo trĂŹnh thiáșżt káșż web
GiĂĄo trĂŹnh thiáșżt káșż web
 
Tim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chongTim hieu ve lo hong web va cach phong chong
Tim hieu ve lo hong web va cach phong chong
 
Chuong07 php
Chuong07 phpChuong07 php
Chuong07 php
 
Giao trinh thiet_ke_web html
Giao trinh thiet_ke_web htmlGiao trinh thiet_ke_web html
Giao trinh thiet_ke_web html
 
Giao trinh html
Giao trinh htmlGiao trinh html
Giao trinh html
 
Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191Bao thuc tap tot nghiep vo minh truong 10299191
Bao thuc tap tot nghiep vo minh truong 10299191
 
Giao Trinh Thiet Ke Web
Giao Trinh Thiet Ke WebGiao Trinh Thiet Ke Web
Giao Trinh Thiet Ke Web
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
 
Lap trinh web dong voi php my sql
Lap trinh web dong voi php my sqlLap trinh web dong voi php my sql
Lap trinh web dong voi php my sql
 
bctntlvn (52).pdf
bctntlvn (52).pdfbctntlvn (52).pdf
bctntlvn (52).pdf
 
Os php-5.3new1
Os php-5.3new1Os php-5.3new1
Os php-5.3new1
 
graphic in C.pdf
graphic in C.pdfgraphic in C.pdf
graphic in C.pdf
 
PHP cĂł thể lĂ m gĂŹ? 9 Thứ thĂș vị cĂł thể lĂ m với PHP
PHP cĂł thể lĂ m gĂŹ?  9 Thứ thĂș vị cĂł thể lĂ m với PHPPHP cĂł thể lĂ m gĂŹ?  9 Thứ thĂș vị cĂł thể lĂ m với PHP
PHP cĂł thể lĂ m gĂŹ? 9 Thứ thĂș vị cĂł thể lĂ m với PHP
 
Tu hoc matlab
Tu hoc matlabTu hoc matlab
Tu hoc matlab
 
Bai th08 php voi csdl
Bai th08 php voi csdlBai th08 php voi csdl
Bai th08 php voi csdl
 
HÆ°ÆĄÌng DĂąÌƒn Php
HÆ°ÆĄÌng DĂąÌƒn  PhpHÆ°ÆĄÌng DĂąÌƒn  Php
HÆ°ÆĄÌng DĂąÌƒn Php
 

Laptrinh ph pvamysql

  • 1. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 1 Ban chØ ÂźÂčo c«ng nghÖ th«ng tin cña cÂŹ quan ٦ng *** T”I liÖu tham kh¶o Ng«n ngĂ· lËp tr×nh pHP H” nĂ©i, 2003
  • 2. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 2 PhÇn I : GiĂ­i thiÖu ng«n ngĂ· lËp tr×nh PHP ch−¬ng i : Ng«n ngĂ· lËp tr×nh pHP I. GiĂ­i thiÖu PHP v” m«i tr−ĂȘng lËp tr×nh web. 1. PHP l” g× ? Cži tÂȘn PHP ban ¼Çu ¼−üc viÕt tŸt bĂ«i cĂŽm tĂ” Personal Home Page, v” ¼−üc phžt triÓn tĂ” nšm 1994 bĂ«i Rasmus Lerdorf. LĂłc ¼Çu chØ l” mĂ©t bĂ© ¼Æc t¶ Perl, ¼−üc sö dĂŽng ¼Ó l−u dÊu vÕt ng−ĂȘi dĂŻng trÂȘn cžc trang web. Sau Ÿã, Rasmus Lerdorf Ÿ· phžt triÓn PHP nh− l” mĂ©t mžy ¼Æc t¶ (Scripting engine). V”o giĂ·a nšm 1997, PHP Ÿ· ¼−üc phžt triÓn nhanh chĂŁng trong sĂč yÂȘu thÝch cña nhiÒu ng−ĂȘi. PHP Ÿ· kh«ng cßn l” mĂ©t dĂč žn cž nh©n cña Rasmus Lerdorf v” Ÿ· trĂ« th”nh mĂ©t c«ng nghÖ web quan trĂ€ng. Zeev Suraski v” Andi Gutmans Ÿ· ho”n thiÖn viÖc ph©n tÝch cĂł phžp cho ng«n ngĂ· ¼Ó rĂ„i thžng 6 nšm 1998, PHP3 Ÿ· ra ÂźĂȘi (phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng l” *.php3). Cho ¼Õn tËn thĂȘi ÂźiÓm Ÿã, PHP ch−a mĂ©t lÇn ¼−üc phžt triÓn chÝnh thĂžc, mĂ©t yÂȘu cÇu viÕt lÂči bĂ© ¼Æc t¶ ¼−üc ¼−a ra, ngay sau Ÿã PHP4 ra ÂźĂȘi (phiÂȘn b¶n n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng ph¶i l” *.php4 m” l” *.php). PHP4 nhanh hÂŹn so vĂ­i PHP3 rÊt nhiÒu. PHP b©y giĂȘ ¼−üc gĂ€i l” PHP Hypertext PreProcesor. 2. TÂči sao ph¶i sö dĂŽng PHP Nh− chĂłng ta Ÿ· biÕt, cĂŁ rÊt nhiÒu trang web ¼−üc x©y dĂčng bĂ«i ng«n ngĂ· HTML (HyperText Markup Language). §©y chØ l” nhĂ·ng trang web tÜnh, nghÜa l” chĂłng chØ chĂža ÂźĂčng mĂ©t nĂ©i dung cĂŽ thÓ vĂ­i nhĂ·ng dßng všn b¶n Ÿn thuÇn, h×nh ¶nh ,v” cĂŁ thÓ ¼−üc sĂč hç trĂź bĂ«i ng«n ngĂ· JavaScript, hoÆc Java Apple. NhĂ·ng trang web nh− vËy ng−ĂȘi ta th−ĂȘng gĂ€i l” client- side. Tuy nhiÂȘn, Internet v” Intranets Ÿ· ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng cÇn tĂ­i cÂŹ sĂ« dĂ· liÖu. Cžc trang Ăžng dĂŽng nh− vËy ¼−üc gĂ€i l” trang web Ÿéng, bĂ«i v× nĂ©i dung cña chĂłng lu«n thay ŸÊi tĂŻy thuĂ©c v”o dĂ· liÖu v” ng−ĂȘi sö dĂŽng. PHP l” ng«n ngĂ· l”m ¼−üc nhĂ·ng ÂźiÒu nh− vËy. B»ng cžch chÂčy ch−¬ng tr×nh PHP trÂȘn mžy chñ Web server, bÂčn cĂŁ thÓ tÂčo ra cžc Ăžng dĂŽng
  • 3. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 3 cĂŁ sĂč t−¬ng tžc vĂ­i cÂŹ sĂ« dĂ· liÖu ¼Ó tÂčo ra nhĂ·ng trang web v” Ÿ©y ¼−üc gĂ€i l” trang web Ÿéng. ChĂłng ta h·y xem xÐt cžch hoÂčt Ÿéng cña trang web ¼−üc viÕt b»ng ng«n ngĂ· HTML v” PHP nh− thÕ n”o. VĂ­i cžc trang HTML : Khi cĂŁ yÂȘu cÇu tĂ­i mĂ©t trang web tĂ” phÝa ng−ĂȘi sö dĂŽng (browser). Web server thĂčc hiÖu ba b−íc sau : + §Àc yÂȘu cÇu tĂ” phÝa browser, + T×m trang web trÂȘn server. + Göi trang web Ÿã trĂ« lÂči cho browser (nÕu t×m thÊy) qua mÂčng Internet hoÆc Intranet . VĂ­i cžc trang PHP : Khžc vĂ­i cžc trang HTML, khi mĂ©t trang PHP ¼−üc yÂȘu cÇu, web server ph©n tÝch v” thi h”nh cžc ÂźoÂčn m· PHP ¼Ó tÂčo ra trang HTML. §iÒu Ÿã ¼−üc thÓ hiÖn b»ng bĂšn b−íc sau : + §Àc yÂȘu cÇu tö phÝa browser. + T×m trang web trÂȘn server. + ThĂčc hiÖn cžc ÂźoÂčn m· PHP trÂȘn trang web Ÿã ¼Ó söa ŸÊi nĂ©i dung cña trang. + Göi trĂ« lÂči nĂ©i dung cho browser (Ÿ©y l” trang HTML cĂŁ thÓ hiÓn thÞ ¼−üc bĂ«i tr×nh duyÖt Internet Explorer hoÆc tr×nh duyÖt n”o Ÿã). TĂŁm lÂči, sĂč khžc nhau giĂ·a HTML v” PHP l” HTML kh«ng ¼−üc thĂčc hiÖn trÂȘn mžy chñ Web server cßn cžc trang *.php viÕt b»ng cžc ÂźoÂčn m· PHP ¼−üc thĂčc hiÖn trÂȘn mžy chñ Web server do Ÿã nĂŁ linh Ÿéng v” mÒm dÎo hÂŹn . Trang html Web server + Đọc yĂȘu cáș§u từ browser + TĂŹm file.htm trĂȘn server + Gá»­i láșĄi cáșŁ file.htm cho browser Request http://domain/file.htm Web server + Đọc yĂȘu cáș§u từ browser + TĂŹm trang web(file.php) trĂȘn server + Thá»±c hiện cĂĄc đoáșĄn mĂŁ PHP + Gá»­i tráșŁ láșĄi nội dung cho browser Request http://domain/file.php Káșżt xuáș„t
  • 4. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 4 3. NhĂ·ng ÂźiÓm mÂčnh cña PHP -PHP thĂčc hiÖn vĂ­i tĂšc Ÿé rÊt nhanh v” hiÖu qu¶ .MĂ©t Server b×nh th−ĂȘng cĂŁ thÓ Ÿžp Ăžng ¼−üc h”ng triÖu truy cËp tĂ­i trong mĂ©t ng”y. PHP hç trĂź kÕt nĂši tĂ­i rÊt nhiÒu hÖ CSDL khžc nhau: PostgreSQL,mSQL,Oracle, dbm, filePro ,Hyperware, informix,InterBase, Sybase, ... Ngo”i ra cßn hç trĂź kÕt nĂši vĂ­i ODBC th«ng qua Ÿã cĂŁ thÓ kÕt nĂši vĂ­i nhiÒu ng«n ngĂ· khžc m” ODBC hç trĂź. -PHP cung cÊp mĂ©t hÖ thĂšng th− viÖn phong phĂł : Do PHP ngay tĂ” ¼Çu ¼−üc thiÕt kÕ nh»m mĂŽc ¼Ých x©y dĂčng v” phžt triÓn cžc Ăžng dĂŽng trÂȘn web nÂȘn PHP cung cÊp rÊt nhiÒu h”m x©y dĂčng sÂœn giĂłp thĂčc hiÖn cžc c«ng viÖc rÊt dÔ d”ng : göi, nhËn mail ,l”m viÖc vĂ­i cžc cookie, v” nhiÒu thĂž khžc nĂ·a . -PHP l” mĂ©t ng«n ngĂ· rÊt dÔ dĂŻng, dÔ hĂ€c v” Ÿn gi¶n hÂŹn nhiÒu so vĂ­i cžc ng«n ngĂ· khžc nh− Perl, Java. NÕu bÂčn Ÿ· biÕt ng«n ngĂ· C th× mĂ€i viÖc sÏ ho”n to”n thuËn lĂźi . -PHP cĂŁ thÓ sö dĂŽng ¼−üc trÂȘn nhiÒu hÖ ÂźiÒu h”nh, chĂłng ta cĂŁ thÓ viÕt chĂłng trÂȘn Unix, Lunix v” cžc phiÂȘn b¶n cña Windows. V” cĂŁ thÓ Âźem m· PHP n”y chÂčy trÂȘn cžc hÖ ÂźiÒu h”nh khžc m” kh«ng ph¶i söa ŸÊi lÂči m·. -PHP l” ng«n ngĂ· m· nguĂ„n mĂ«. II. BiÕn, h»ng sĂš v” kiÓu dĂ· liÖu trong PHP. 1. KiÓu dĂ· liÂȘu . PHP cĂŁ ba kiÓu dĂ· liÖu cÂŹ b¶n : interger, double v” string. Ngo”i ra cßn cĂŁ cžc kiÓu dĂ· liÖu khžc (nh−ng kh«ng ph¶i cžc kiÓu dĂ· liÖu cÂŹ b¶n) nh− arrays (cžc kiÓu dĂ· liÖu m¶ng), objects (cžc kiÓu dĂ· liÖu ŸÚi t−üng). Interger l” kiÓu chiÕm 4 byte bĂ© nhĂ­ ,giž trÞ cña nĂŁ trong kho¶ng –2 tĂ» tĂ­i + 2 tĂ». KiÓu Double l” kiÓu sĂš thĂčc ,phÂčm vi biÓu diÔn ± (10-308 Ă· 10308 ). KiÓu string dĂŻng ¼Ó chĂža cžc giž trÞ bao gĂ„m cžc kĂœ tĂč v” con sĂš . VÝ dĂŽ : 2 // Ÿ©y l” kiÓu interger 1.0 // Ÿ©y l” kiÓu double “2” // Ÿ©y l” kiÓu string
  • 5. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 5 “2 hours” // Ÿ©y l” mĂ©t kiÓu string khžc 2. H»ng sĂš H»ng sĂš l” nhĂ·ng giž trÞ kh«ng ŸÊi. ChĂłng ta th−ĂȘng dĂŻng h»ng sĂš ¼Ó l−u cžc giž trÞ kh«ng ŸÊi trong suĂšt ch−¬ng tr×nh nh− : nhiÖt Ÿé (00 C), cžc giž trÞ thĂȘi gian chØ sĂč chuyÓn giao giĂ·a sžng ,ch−a ,chiÒu ,tĂši ... a. Khai bžo h»ng sĂš : Ta dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš : define(“COMPANY”, “Phop’s Bicycles”); define(“YELLOW”, “#FFFF00”); define(“VERSION”, 4); define(“NL”, “<BR>n”); Trong vÝ dĂŽ trÂȘn chĂłng ta Ÿ· dĂŻng h”m define() ¼Ó khai bžo h»ng sĂš NL. H»ng sĂš n”y l” mĂ©t thÎ ngŸt dßng trong HTML. ChĂłng ta sÏ sö dĂŽng cžc h»ng sĂš trong PHP nh− sau : echo (“Employment at ”. COMPANY. NL); Cžch viÕt trÂȘn cĂČng giĂšng nh− cžc viÕt sau: echo (“Employment at Phop’s Bicycles<BR>n”); ChĂł Ăœ : h»ng sĂš ph¶i Ă« ngo”i hai dÊu “ v” ”. TrĂȘng hĂźp sau l” kh«ng cĂŁ hiÖu lĂčc : echo (“Employment at COMPANY NL”);. Khi thĂčc hiÖn nĂŁ sÏ cho kÕt qu¶ l” : “Employment at COMPANY NL”. H”m defined() : h”m n”y dĂŻng ¼Ó kiÓm tra xem mĂ©t h»ng sĂš n”o Ÿã Ÿ· ¼−üc khai bžo ch−a. VÝ dĂŽ : if ( defined (“YELLOW”)) { echo (“<BODY BGCOLOR=”. YELLOW. “>n”); }
  • 6. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 6 b. Cžc h»ng sĂš Ÿ· ¼−üc ¼Þnh nghÜa trong PHP (Built-in Constants): §Ó hç trĂź cho ng−ĂȘi lËp tr×nh, PHP cung cÊp sÂœn cžc h»ng sĂš nh− : cžc biÕn m«i trĂȘng, cžc biÕn cña Web server Apache ... NgĂȘi lËp tr×nh cĂŁ thÓ sö dĂŽng h”m phpinfo() ¼Ó xem cžc giž trÞ n”y. <HTML> <!—phpinfo() --> <BODY> <?php phpinfo(); ?> </BOCY> </HTML> + H»ng sĂš nguyÂȘn : Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu integer. VÝ dĂŽ : 10 + H»ng sĂš thĂčc: Ÿ©y l” nhĂ·ng giž trÞ cĂŁ kiÓu double. VÝ dĂŽ : 10.00 + HŸng kĂœ tĂč : Ÿ©y l” mĂ©t x©u kĂœ tĂč ¼Æt trong dÊu ngoÆc Ÿn hoÆc kÐp. VÝ dĂŽ : “Ng«n ngĂ· lËp tr×nh PHP”.
  • 7. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 7 3. BiÕn v” giž trÞ logic. + CĂČng giĂšng vĂ­i C/C++, PHP kh«ng cĂŁ khži niÖm TRUE v” FALSE. Cžc giž trÞ TRUE ¼−üc hiÓu l” nhĂ·ng giž trÞ b»ng 1 v” giž trÞ FALSE l” nhĂ·ng giž trÞ b»ng 0 hoÆc x©u rçng . + Khi sö dĂŽng biÕn chĂłng ta kh«ng cÇn khai bžo kiÓu . VÝ dĂŽ : $a = 1; // $a l” mĂ©t biÕn kiÓu integer. $a = 1.2; // b©y giĂȘ $a l” mĂ©t biÕn kiÓu double. $a = “A” ; // b©y giĂȘ $a lÂči l” mĂ©t biÕn kiÓu string. + NÕu nh− thĂčc hiÖn phÐp tožn giĂ·a biÕn cĂŁ kiÓu sĂš v” kiÓu string, PHP sÏ coi chuçi l” mĂ©t d·y sĂš nh− sau : $str = “222B Baker Street”; Ta thÊy biÕn $str cĂŁ giž trÞ kiÓu string, v” nÕu cĂ©ng sĂš 3 vĂ­i giž trÞ n”y th× : $x = 3 + $str ; // $x = 225 khi Ÿã biÕn $x nhËn ¼−üc giž trÞ 255 v× PHP Ÿ· cĂ©ng 3 vĂ­i ba sĂš ¼Çu. Nhng nÕu ta in giž trÞ cña biÕn $str th× echo ($str); // print : “222B Baker Street” ChĂł Ăœ r»ng cžc phÐp tožn giĂ·a sĂš v” chuçi chØ Ÿóng khi kĂœ tĂč ¼Çu cña chuçi l” sĂš . + Ta cĂČng cĂŁ thÓ l”m thay ŸÊi kiÓu giž trÞ cña mĂ©t biÕn b»ng cžch Ðp kiÓu $a = 11.2; // biÕn $a cĂŁ kiÓu double $a = (int) $a; // b©y giĂȘ $a cĂŁ kiÓu integer ,giž trÞ l” 11 $a = (double) $a; // b©y giĂȘ $a lÂči cĂŁ kiÓu double, giž trÞ l” 11.0 $b = (string) $a ; // biÕn $b cĂŁ kiÓu string ,giž trÞ l” “11” CĂČng ph¶i biÕt r»ng PHP tĂč Ÿéng chuyÓn ŸÊi kiÓu rÊt tĂšt. NÕu thËt sĂč cÇn thiÕt chĂłng ta mĂ­i ph¶i dĂŻng cžch trÂȘn.
  • 8. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 8 + Cžc h”m l”m viÖc vĂ­i biÕn gettype() : h”m n”y tr¶ lÂči kiÓu cña mĂ©t biÕn n”o Ÿã. Giž trÞ tr¶ vÒ cĂŁ thÓ l” : “integer” “double” “string” “array” “object” “class” “unknown type” vÝ dĂŽ : if (gettype($user_input) == “integer”) { $age = $user_input; } settype() : h”m n”y Ðp kiÓu cho mĂ©t biÕn n”o Ÿã. NÕu th”nh c«ng h”m tr¶ vÒ giž trÞ 1 (true) ,ng−üc lÂči l” 0 (false). vÝ du : $a = 7.5; settype($a, “integer”); if (settype($a, “array”)){ echo (“Conversion succeeded. ”); }else{ echo (“Conversion error. ”); } isset() v” unset() : H”m isset() kiÓm tra mĂ©t biÕn Ÿ· ¼−üc gžn giž trÞ hay ch−a, h”m unset() sÏ gi¶i phĂŁng bĂ© nhĂ­ cho mĂ©t biÕn n”o Ÿã . vÝ dĂŽ :
  • 9. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 9 $id = “323bb”; if (isset($id)) { echo (“DĂ· liÖu Ÿ· ¼−üc gžn”); }else{ echo (“DĂ· liÖu ch−a ¼−üc gžn”); } unset($id); if(!isset($id)) { echo (“DĂ· liÖu Ÿ· ¼−üc gi¶i phĂŁng”); } empty() : CĂČng giĂšng h”m isset(), h”m empty() sÏ tr¶ vÒ giž trÞ 1 (true) nÕu mĂ©t biÕn l” rçng v” ng−üc lÂči 0 (false). §Úi vĂ­i biÕn cĂŁ kiÓu sĂš giž trÞ b»ng 0 ¼−üc coi l” rçng, biÕn kiÓu string ¼−üc coi l” rçng nÕu x©u l” x©u rçng. vÝ dĂŽ: echo empty($new) ; // true $new = 1; echo empty($new); // false $new = “”; echo empty($new); // true $new = 0; echo empty($new); // true $new = “So 323”; echo empty($new); // false unset($new); echo empty($new); // true
  • 10. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 10 III. Cžc tožn tö + B¶ng cžc phÐp tožn sĂš hĂ€c PhÐp tožn Ăœ nghÜa VÝ dĂŽ Gi¶i thÝch + - * / % PhÐp cĂ©ng PhÐp trĂ” PhÐp nh©n PhÐp chia Chia d 7 + 2 7 – 2 7 * 2 7 / 2 7 % 2 ThĂčc hiÖn phÐp cĂ©ng giĂ·a 7 v” 2 : 9 ThĂčc hiÖn phÐp trĂ” giĂ·a 7 v” 2 : 5 ThĂčc hiÖn phÐp nh©n giĂ·a 7 v” 2 : 14 ThĂčc hiÖn phÐp chia giĂ·a 7 v” 2 : 3.5 ThĂčc hiÖn phÐp chia d giĂ·a 7 v” 2 : 1 Ta cĂŁ thÓ viÕt cžc phÐp tožn ngŸn gĂ€n nh− b¶ng sau : Khi viÕt T−¬ng ¼−¬ng vĂ­i $h += $i $h -= $i $h *= $i $h /= $i $h %= $i $h = $h + $i $h = $h - $i $h = $h * $i $h = $h / $i $h = $h % $i + PhÐp gžn : vÝ dĂŽ : $x = 1; $y = $x + 1; $length = $area / $width;
  • 11. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 11 + B¶ng cžc phÐp tožn quan hÖ PhÐp tožn Ăœ nghÜa VÝ dĂŽ Gi¶i thich == < > <= >= != <> So sžnh b»ng So sžnh nhĂĄ hÂŹn So sžnh lĂ­n hÂŹn NhĂĄ hÂŹn hoÆc b»ng LĂ­n hÂŹn hoÆc b»ng So sžnh khžc So sžnh khžc $h == $i $h < $i $h > $i $h <= $i $h => $i $h != $i $h <> $i KiÓm tra $h v” $i cĂŁ b»ng nhau kh«ng KiÓm tra $h cĂŁ nhĂĄ hÂŹn $i kh«ng KiÓm tra $h cĂŁ lĂ­n hÂŹn $i kh«ng KiÓm tra $h cĂŁ nhĂ« hÂŹn hoÆc b»ng $i KiÓm tra $h cĂŁ lĂ­n hÂŹn hoÆc b»ng $i KiÓm tra $h cĂŁ khžc $i kh«ng KiÓm tra $h cĂŁ khžc $i kh«ng Cžc phÐp so sžnh th−ĂȘng dĂŻng kiÓm tra ÂźiÒu kiÖn trong cžc c©u lÖnh ÂźiÒu khiÓn m” ta sÏ hĂ€c Ă« b”i sau . + B¶ng cžc phÐp tožn logic PhÐp tožn logic cĂŻng vĂ­i tožn hÂčng tÂčo th”nh biÓu thĂžc logic. BiÓu thĂžc logic cĂŁ thÓ cĂŁ giž trÞ l” 1 (true) hoÆc 0 (false) . Tožn hÂčng a Tožn hÂčng b a && b a || b !a !b 1 1 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 0 1 + Cžc phÐp tožn vĂ­i biÕn kiÓu string .
  • 12. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 12 Ta sö dĂŽng dÊu “. “ ¼Ó ghÐp hai biÕn kiÓu string vĂ­i nhau . vÝ dĂŽ : $first = “Phineas”; $last = “Phop”; $full = $first. “ ”. $last; // $full = “Phineas Phop” ; echo ($full); Ta cĂŁ thÓ ghÐp hai x©u nh− sau: echo ($last. “’s Bicycles”); //print : Phop’s Bicycles §Ó cĂŁ thÓ chÌn mĂ©t biÕn v”o trong h”ng cĂŁ kiÓu string th× tÂȘn biÕn ph¶i ¼Ó trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n. echo (“${last}’s Bicycles”); + Cžc phÐp tožn thao tžc mĂžc bit. Cžc phÐp tožn thao tžc mĂžc bit tžc Ÿéng lÂȘn tĂ”ng bit cña tožn hÂčng . KĂœ hiÖu Ăœ nghÜa & | ^ AND bit OR bit XOR bit B¶ng cžc phÐp tožn nh− sau : & KÕt qu¶ | KÕt qu¶ ^ KÕt qu¶ 1&1 1&0 0&1 0&0 1 0 0 0 1 | 1 1 | 0 0 | 1 0 | 0 1 1 1 0 1^1 1^0 0^1 0^0 0 1 1 0 PHP cĂČng hç trĂź cžc phÐp dÞch ph¶i v” dÞch trži >> : dÞch ph¶i << : dÞch trži Gi¶ sö $a l” mĂ©t biÕn nguyÂȘn th× phÐp tožn : $a >> n l”m cho cžc bit trong $a bÞ dÞch ph¶i Âźi n vÞ trÝ. T−¬ng tĂč ta cĂŁ phÐp dÞch trži .
  • 13. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 13 vÝ dĂŽ : 11 >> 2 = 2 ; v× : 11 (1011) >> 2 2 (0010) + Cžc phÐp tožn tšng gi¶m : - PhÐp tšng : phÐp tšng (tožn tö tšng) tšng giž trÞ cña tožn hÂčng lÂȘn mĂ©t Ÿn vÞ. $a ++ : $a ¼−üc sö dĂŽng rĂ„i mĂ­i tšng ++ $a : $a tšng rĂ„i mĂ­i ¼−üc sö dĂŽng - PhÐp gi¶m : t−¬ng tĂč nh− phÐp tšng, khžc l” giž trÞ bÞ gi¶m Âźi mĂ©t Ÿn vÞ. $a -- : $a ¼−üc sö dĂŽng rĂ„i mĂ­i gi¶m -- $a : $a gi¶m rĂ„i mĂ­i ¼−üc sö dĂŽng vÝ dĂŽ : $a = 10; // $a b»ng 10 $b = $a++ ; // $a b»ng 11 nh−ng $b b»ng 10 $a = 10; // $a b»ng 10 $b = -- $a ; // $a b»ng 9 v” $b b»ng 9 + PhÐp tožn ÂźiÒu kiÖn. ? : PhÐp tožn ÂźiÒu kiÖn cĂŻng vĂ­i tožn hÂčng tÂčo nÂȘn biÓu thĂžc ÂźiÒu kiÖn. Ta kĂœ hiÖu e1 ,e2, e3 l” ba tožn hÂčng. BiÓu thĂžc cĂŁ dÂčng : e1 ? e2 : e3 NÕu e1 != 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e2 NÕu e1 == 0 th× giž trÞ cña biÓu thĂžc ÂźiÒu kiÖn l” e3 vÝ dĂŽ : t×m max max = $a>$b ? a : b ;
  • 14. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 14 + Tožn tö sizeof (ŸÚi t−üng) : PhÐp tožn sizeof cho biÕt kÝch th−íc (tÝnh b»ng byte ) « nhĂ­ m” ŸÚi t−üng chiÕm trong bĂ© nhĂ­. §Úi t−üng Ă« Ÿ©y cĂŁ kiÓu l” integer, double, string. vÝ dĂŽ : $a = 10; echo sizeof($a); //sÏ in ra m”n h×nh l” : 4 IV. Cžc c©u lÖnh ÂźiÒu khiÓn 1. LÖnh if_else : Ÿ©y l” lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn . a. DÂčng 1 : if ( biÓu thĂžc ) c©u lÖnh; C©u lÖnh Ă« Ÿ©y t−¬ng ¼−¬ng vĂ­i mĂ©t khĂši lÖnh. MĂ©t khĂši lÖnh ¼−üc ¼Æt trong dÊu ngoÆc kÐp. Ăœ nghÜa : + NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh ¼−üc thĂčc hiÖn. + NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh kh«ng ¼−üc thĂčc hiÖn b. DÂčng 2 : if ( biÓu thĂžc ) c©u lÖnh 1; else c©u lÖnh 2; Ăœ nghÜa : + NÕu biÓu thĂžc khžc kh«ng ,th× c©u lÖnh 1 ¼−üc thĂčc hiÖn. + NÕu biÓu thĂžc b»ng kh«ng, th× c©u lÖnh 2 ¼−üc thĂčc hiÖn ChĂł Ăœ : * C©u lÖnh 1 Ă« dÂčng 2 l” lÖnh if_else
  • 15. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 15 + NÕu l−üng else b»ng l−üng If th× else thuĂ©c vÒ If gÇn nhÊt theo tĂ”ng cÆp tĂ” trong ra ngo”i. VÝ dĂŽ : $a = 10; $b = 10; $c = 3; $d = 3; $e = 12; $f = 8; if($a == $b) if($c == $d) if($e == $f) $max = $e; else $max = $f; else $max = $d; else $max = $b echo $max ; //printf max = 8 + NÕu l−üng else Ýt hÂŹn l−üng If th× else thuĂ©c vÒ If ngÇn nhÊt theo tĂ”ng cÆp tĂ” trong ra ngo”i. VÝ dĂŽ : <?php if ($a == $b) if ($c == $d) $max = 0 else $max = $d; ?> T−¬ng ¼−¬ng vĂ­i : <?php if ($a == $b) { if ( $c == $d) $max = 0; } else $max = $b; ?> * C©u lÖnh 2 cña dÂčng 2 l” elseif :
  • 16. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 16 BŸt nguĂ„n tĂ” : if ( biÓu_thĂžc1 ) c©u_lÖnh 1; else if ( biÓu_thĂžc 2 ) c©u_lÖnh 2; else if ( biÓu_thĂžc 3 ) c©u_lÖnh 3; ... else if ( biÓu_thĂžc i ) c©u_lÖnh i; ... else c©u_lÖnh n; CĂŁ thÓ viÕt lÂči nh− sau: if ( biÓu_thĂžc1 ) c©u_lÖnh 1; elseif (biÓu_thĂžc 2) c©u_lÖnh 2; elseif (biÓu_thĂžc 3) c©u_lÖnh 3; ... elseif (biÓu_thĂžc i) c©u_lÖnh i; ... else c©u_lÖnh n; C©u lÖnh elseif tÂčo ra lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc hiÖn 1 trong n cžch khžc nhau. - NÕu biÓu_thĂžc i khžc kh«ng (i = 1,..n-1) th× thĂčc hiÖn c©u lÖnh i . - NÕu biÓu_thĂžc i b»ng kh«ng (i = 1, ..n-1) th× c©u lÖnh thĂž n ¼−üc thĂčc hiÖn. 2. C©u lÖnh switch : switch (biÓu_thĂžc n) { case n1: c©u lÖnh 1; break; case n2: c©u lÖnh 2; break; ... case nn: c©u lÖnh nn; [default: c©u lÖnh] }
  • 17. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 17 C©u lÖnh switch l” c©u lÖnh rÏ nhžnh cĂŁ ÂźiÒu kiÖn trong Ÿã thĂčc hiÖn mĂ©t trong n cži rÏ nhžnh. +NÕu biÓu_thĂžc n = ni (i = 1, .. n) th× c©u lÖnh sau case ni ¼−üc thĂčc hiÖn cho ¼Õn khi gÆp lÖnh break hoÆc dÊu ngoÆc “}” +NÕu biÓu_thĂžc n != mĂ€i ni (i = 1, .. n) m” cĂŁ nhžnh Default th× cžc c©u lÖnh sau Default ¼−üc thĂčc hiÖn. VÝ dĂŽ : <?php $val = 6; $a = 5; $b = 6; $d = 7; switch ($val) { case $a : echo (“five”); break; case $b : echo (“six”); break; case $c : echo (“seven”); break; default : echo ($val); } ?> 3. C©u lÖnh FOR: DÂčng lÖnh : for (biÓu_thĂžc 1; biÓu_thĂžc 2; biÓu_thĂžc 3) c©u lÖnh ; LÖnh for l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn. B−íc 1 : tÝnh biÓu_thĂžc 1 B−íc 2 : tÝnh biÓu_thĂžc 2 : NÕu biÓu_thĂžc 2 khžc 0 th× thĂčc hiÖn c©u lÖnh v” sang b−íc 3.
  • 18. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 18 NÕu biÓu_thĂžc 2 b»ng 0 th× kÕt thĂłc vßng for B−íc 3 : tÝnh biÓu_thĂžc 3 v” quay lÂči b−íc 2. + biÓu_thĂžc 1, biÓu_thĂžc 2, biÓu_thĂžc 3 l” cžc th”nh phÇn. Mçi th”nh phÇn cĂŁ thÓ gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã mçi biÓu thĂžc ¼−üc viÕt cžch nhau mĂ©t dÊu phÈy (“,”). +Cžc biÓu thĂžc ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i +BiÓu thĂžc trong biÓu_thĂžc 2 quyÕt ¼Þnh thĂčc hiÖn th©n cña for. VÝ dĂŽ : <?php for($i = 0; $j = 4,$i < $j; $i++,$j--) { echo (“i =”. $i. “ ,j = “. $j. “<br>”); } ?> +CĂŁ thÓ vŸng mÆt bÊt kÓ th”nh phÇn n”o. NÕu vŸng mÆt biÓu_thĂžc 2 th× c©u lÖnh lu«n ¼−üc thĂčc hiÖn. MÆc dĂŻ vŸng mÆt vÉn ph¶i cĂŁ dÊu chÊm phÈy (“;”) VÝ dĂŽ : <?php for ( ; ; ) { if (my_function() == “stop”) break; } ?> +NÕu vŸng biÓu_thĂžc 1 v” biÓu_thĂžc 3 th× : for ( ; biÓu_thĂžc 2 ; ) cau_lenh ; t−¬ng ¼−¬ng vĂ­i : while (biÓu_thĂžc 2) cau_lenh ; 4. C©u lÖnh WHILE while (biÓu_thĂžc) c©u lÖnh ;
  • 19. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 19 LÖnh while l” mĂ©t lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn. §iÒu kiÖn thĂčc hiÖn ¼−üc kiÓm tra Ă« ¼Çu chu tr×nh. B−íc 1 : TÝnh biÓu thĂžc NÕu biÓu thĂžc khžc kh«ng, sang b−íc 2 NÕu biÓu thĂžc b»ng kh«ng, kÕt thĂłc vßng while B−íc 2 : ThĂčc hiÖn c©u lÖnh. Quay lÂči b−íc 1. ChĂł Ăœ : + BiÓu thĂžc cĂŁ thÓ bao gĂ„m nhiÒu biÓu thĂžc. Khi Ÿã cžc biÓu thĂžc ¼−üc viÕt cžch nhau mĂ©t dÊu phÈy ,v” ¼−üc tÝnh lÇn l−üt tĂ” trži qua ph¶i. BiÓu thĂžc cuĂši cĂŻng quyÕt ¼Þnh thĂčc hiÖn c©u lÖnh. + Kh«ng ¼−üc phÐp vŸng mÆt biÓu thĂžc + §Ó tÂčo chu tr×nh v« tËn th× while(1) { ... if (biÓu_thĂžc) break; ... } VÝ dĂŽ : $i = 11; while (--$i) { if (my_function($i) == “error”) { break; } ++ $number; }
  • 20. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 20 5. LÖnh DO ... WHILE DÂčng lÖnh : do { c©u lÖnh; }while (biÓu_thĂžc); LÖnh do ... while l” lÖnh tÂčo chu tr×nh cĂŁ ÂźiÒu kiÖn, trong Ÿã ÂźiÒu kiÖn thĂčc hiÖn chu tr×nh ¼−üc kiÓm tra Ă« cuĂši chu tr×nh. HoÂčt Ÿéng : B−íc 1 : ThĂčc hiÖn c©u lÖnh B−íc 2 : TÝnh biÓu thĂžc biÓu_thĂžc +NÕu biÓu thĂžc biÓu_thĂžc khžc kh«ng th× quay lÂči b−íc 1 +NÕu biÓu thĂžc biÓu_thĂžc b»ng kh«ng th× kÕt thĂłc do ... while. VÝ dĂŽ : <?php echo (“<SELECT name=’num’>n”); $i = 0; $total = 10; do { echo (“t <OPTION value=$i>$i</OPTION>n”); }while(++ $i < $total); echo (“</SELECT>n”); ?> 6. LÖnh break L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn v” th−ĂȘng dĂŻng ¼Ó ra khĂĄi th©n cña switch, while, do ... while, for .
  • 21. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 21 LÖnh break chØ cho phÐp thožt khĂĄi th©n cžc lÖnh bÂȘn trong nhÊt chĂža nĂŁ. 7. LÖnh continue L” lÖnh rÏ nhžnh kh«ng ÂźiÒu kiÖn .LÖnh th−ĂȘng dĂŻng ¼Ó bŸt ¼Çu lÂči mĂ©t chu tr×nh mĂ­i trong cžc lÖnh for, while, do ... while m” kh«ng cÇn thĂčc hiÖn hÕt to”n bĂ© th©n cña cña lÖnh tÂčo chu tr×nh. 8. Khai bžo tiÒn xö lĂœ include v” require . §Ó sö dĂŽng cžc ÂźoÂčn m· Ă« bÂȘn ngo”i, chĂłng ta cĂŁ thÓ sö dĂŽng khai bžo tiÒn xö lĂœ include v” require. Cho phÐp chĂłng ta x©y dĂčng cžc h”m cžc h»ng sĂš, v” bÊt kĂș ÂźoÂčn m· n”o sau Ÿã cĂŁ thÓ chÌn v”o cžc ÂźoÂčn script. Require khžc include l”, nĂŁ cĂŁ thÓ l”m thay ŸÊi nĂ©i dung cña trang hiÖn tÂči khi biÂȘn dÞch, cžc trang n”y dĂŻng ¼Ó khai bžo cžc biÕn, cžc h»ng sĂš hay cžc ÂźoÂčn m· Ÿn gi¶n kh«ng cĂŁ vßng lÆp. Khi Ÿã include cho phÐp thĂčc hiÖn cžc c©u lÖnh phĂžc tÂčp – cĂŁ c©u lÖnh tÂčo chu tr×nh. NĂŁ chØ sö dĂŽng cžc h”m nh− nhĂ·ng h”m ngo”i cña ch−¬ng tr×nh. V. H”m trong PHP 1. Quy tŸc x©y dĂčng h”m function tÂȘn_h”m (danh sžch ŸÚi sĂš h×nh thĂžc) { Th©n h”m . } + §Þnh nghÜa h”m kh«ng nhÊt thiÕt ph¶i n»m ngo”i th©n mĂ€i h”m, trong h”m cĂŁ thÓ cĂŁ h”m khžc. Nh−ng viÖc sö dĂŽng mĂ©t h”m kh«ng khžc nhau giĂ·a x©y dĂčng h”m trong th©n mĂ©t h”m v” ngo”i mĂ€i h”m . + TÂȘn h”m tuĂș ¼Æt v” khžc tÂȘn h”m chuÈn. + H”m cĂŁ thÓ cĂŁ giž trÞ tr¶ vÒ hoÆc kh«ng. + Cžc c©u lÖnh ¼−üc quyÒn gĂ€i bÊt kĂș h”m n”o Ÿ· ¼−üc khai bžo v” Ÿ· ¼−üc ¼Þnh nghÜa.
  • 22. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 22 + Return : - Tr¶ mĂ©t giž trÞ vÒ cho nÂŹi gĂ€i h”m - L” nÂŹi bžo kÕt thĂłc h”m 2. GĂ€i h”m . + H”m ph¶i ¼−üc x©y dĂčng (khai bžo) tr−íc khi gĂ€i . + Khi gĂ€i h”m, nÕu cĂŁ giž trÞ tr¶ vÒ th−ĂȘng ¼−üc ¼Æt trong biÓu thĂžc . 3. BiÕn to”n cĂŽ v” biÕn cĂŽc bĂ©. Th«ng th−ĂȘng PHP coi cžc biÕn ¼−üc sö dĂŽng trong th©n cña h”m l” biÕn cĂŽc bĂ©. NghÜa l” biÕn trong th©n h”m kh«ng l”m thay ŸÊi giž trÞ cña biÕn Ă« ngo”i h”m Ÿã. MuĂšn h”m l”m thay ŸÊi giž trÞ cña biÕn ngo”i ta cÇn khai bžo global tr−íc biÕn Ÿã trong th©n h”m . VÝ dĂŽ : $position = “m”; function change_pos() { $position = “s”; } change_pos(); echo (“$position”); //Prints “m” Ta thÊy biÕn $position giž trÞ kh«ng ŸÊi sau khi gĂ€i h”m change_pos(). $position = “m”; function change_pos() { global $position; $position = “s”; } change_pos(); echo (“$position”); //Prints “s”
  • 23. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 23 Ta cĂŁ thÓ viÕt nh− trÂȘn hoÆc ta cĂŁ thÓ viÕt : $position = “m”; function change_pos() { GOLOBALS[$position] = “s”; } change_pos(); echo (“$position”); //Prints “s” VI. BiÕn m¶ng trong PHP 1. M¶ng mĂ©t chiÒu M¶ng l” mĂ©t biÕn bao gĂ„m nhiÒu phÇn tö cĂŁ cĂŻng tÂȘn nh−ng khžc nhau vÒ chØ sĂš (cžc chØ sĂš n”y tšng dÇn tĂ” 0 ¼Õn n). VĂ­i ng«n ngĂ· lËp tr×nh C, cžc phÇn tö cña m¶ng cĂŁ cĂŻng kiÓu dĂ· liÖu ,nh−ng vĂ­i PHP th× mÒm dÎo hÂŹn. Cžc phÇn tö cña m¶ng kh«ng nhÊt thiÕt ph¶i cĂŻng kiÓu. a. Khai bžo m¶ng mĂ©t chiÒu. Ta cĂŁ thÓ khai bžo m¶ng b»ng cžch gžn tÂȘn m¶ng vĂ­i dÊu Ÿãng mĂ« ngoÆc vu«ng kh«ng cĂŁ chØ sĂš. ChĂłng ta h·y xÐt vÝ dĂŽ sau : $countries[] = “cr”; $countries[] = “de”; $countries[] = “us”; VÝ dĂŽ trÂȘn tÂčo ra mĂ©t m¶ng gĂ„m ba phÇn tö cĂŁ chØ sĂš l” 0, 1 v” 2. ViÖc Ÿã cĂČng t−¬ng tĂč nh− ta gžn : $countries[0] = “cr”; $countries[1] = “de”; $countries[2] = “us”; Ngo”i ra cžc chØ sĂš cña m¶ng kh«ng nhÊt thiÕt ph¶i tšng dÇn m” cĂŁ thÓ ¼−üc khai bžo nh sau : $countries[50] = “cr”;
  • 24. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 24 $countries[20] = “de”; $countries[10] = “us”; echo (“$countries[20]”); // prints de Khi Ÿã ¼Ó thÂȘm mĂ©t phÇn tö mĂ­i v”o m¶ng chĂłng ta cĂŁ thÓ viÕt $countries[] = “uk”; // chØ sĂš sÏ l” 51 MĂ©t phÇn tö mĂ­i ¼−üc thÂȘm v”o vĂ­i chØ sĂš l” chØ sĂš lĂ­n nhÊt cña m¶ng cĂ©ng thÂȘm mĂ©t. Ngo”i ra cĂČng cĂŁ thÓ khai bžo m¶ng mĂ©t chiÒu b»ng c©u lÖnh array $countries = array (“cr”, “de”, “us”) ; echo (“$countries[2]”); //prints “us” §Ó chØ sĂš kh«ng bŸt ¼Çu tĂ” kh«ng ta cĂŁ thÓ khai bžo lÂči nh− sau $countries = array (1 => “cr”, “de”, “us”); echo (“$countries[2]”); //prints “de” Tožn tö => cĂŁ thÓ ¼−üc sö dĂŽng tr−íc bÊt kĂș mĂ©t phÇn tö n”o trong m¶ng $countries = array (“cr”, 7 => “de”, “us”); v” khi Ÿã phÇn tö cĂŁ giž trÞ “cr” cĂŁ chØ sĂš l” 0 cßn phÇn tö cĂŁ giž trÞ “de”, “us” lÇn l−üt l” 7 v” 8. Khžc vĂ­i ng«n ngĂ· lËp tr×nh C, chØ sĂš cña m¶ng mĂ©t chiÒu kh«ng chØ l” cžc sĂš nguyÂȘn m” cßn l” x©u kĂœ tĂč. Ta cĂŁ thÓ khai bžo nh− sau : $countries[“ca”] = “Canada”; $countries[“cr”] = “Costa Rica”; $countries[“de”] = “Germany”; $countries[“uk”] = “United Kingdom”; $countries[“us”] = “United States”; echo (“$countries[“ca”]); // print Canada NÕu dĂŻng array th× sÏ l” : $countries = (“ca” => “Canada”,
  • 25. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 25 “cr” => “Costa Rica”, “de” => “Germany”, “uk” => “United Kingdom”, “us” => “United States”);
  • 26. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 26 b. L”m viÖc vĂ­i cžc phÇn tö cña m¶ng CĂŁ thÓ sö dĂŽng vßng lÆp for xÐt tĂ”ng phÇn tö cña m¶ng. $countries = array (“cr”, “de”, “us”); $num_elements = count($countries); for ($i = 0 ; $i < $num_elements ; $i ++) { echo (“$countries[$i] <BR>n”); } VÝ dĂŽ trÂȘn sÏ Ÿóng khi chØ sĂš cña cžc phÇn tö tšng dÇn ¼Òu. NÕu chØ sĂš cžc phÇn tö kh«ng theo mĂ©t thĂž tĂč n”o c¶ ta cĂŁ thÓ sö dĂŽng h”m list() v” each(). reset ($countries); while (list ($key, $value ) = each ($countries)) { echo (“ChØ sĂš $key, giž trÞ $value”); } §Ó di chuyÓn con trĂĄ tĂ­i phÇn tö tiÕp theo hoÆc tr−íc Ÿã ta cĂČng cĂŁ thÓ dĂŻng h”m next() - h”m next() tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo kh«ng ph¶i l” phÇn tö cuĂši cĂŻng, ng−üc lÂči l” 0 (false) v” prev() - h”m prev() cho giž trÞ tr¶ vÒ l” 1 (true) nÕu phÇn tö tiÕp theo kh«ng ph¶i l” phÇn tö ¼Çu tiÂȘn, ng−üc lÂči l” 0 (false). H”m key () sÏ cho biÕt chØ sĂš v” h”m current() sÏ cho biÕt giž trÞ cña phÇn tö Ÿã . $arr = array (3, 4, 5, 6, 7); do { $k = key ($arr); $val = current ($arr); echo (“PhÇn tö $k = $val”); }while 2. M¶ng hai chiÒu ChĂłng ta cĂŁ thÓ khai bžo m¶ng hai chiÒu nh− sau :
  • 27. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 27 $countries = array (“Europs” => array (“de”, “uk”), “North America” => array (“ca”, “cr”, “us”)); echo ($countries[“Europs”][1]); // print “uk” echo ($countries[“North America”][2]); // print “us” Ta cĂŁ cÊu trĂłc cña m¶ng trÂȘn nh− sau : $countries[“Europs”] $countries[“North America”] [0] [1] [0] [1] [2] “de” “uk” “ca” “cr” “us” CĂČng giĂšng nh− m¶ng mĂ©t chiÒu ta sÏ dĂŻng vßng lÆp nh− for, while, do ... while ¼Ó duyÖt qua cžc phÇn tö cña m¶ng. VÝ dĂŽ : $countries = array (“Europs” => array (“de”, “uk”), “North America” => array (“ca”, “cr”, “us”)); while (list ($key1) = each ($countries)) { echo (“$key1 : <BR>n”); while (list ($key2, $val) = each($countries[“$key1”])) { echo (“ - $val <BR>n”) } } Khi chÂčy ch−¬ng tr×nh sÏ in ra m”n h×nh l” : Europ : - de - uk North America : - ca - cr - us
  • 28. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 28 3. Cžc h”m sŸp xÕp m¶ng . PHP cung cÊp cho chĂłng ta cžc h”m ¼Ó sŸp xÕp m¶ng. VĂ­i mçi loÂči m¶ng sÏ cĂŁ mĂ©t h”m t−¬ng Ăžng. VĂ­i m¶ng cĂŁ chØ sĂš l” kiÓu nguyÂȘn chĂłng ta cĂŁ h”m sort() ¼Ó sŸp xÕp tšng dÇn cžc phÇn tö cña m¶ng, h”m rsort() sÏ sŸp xÕp cžc phÇn tö cña m¶ng gi¶m dÇn . $countries = array (“us”, “uk”, “ca”, “cr”, “de”); sort ($countries); while (list ($key, $val) = each ($countries)) { echo (“Element $key equals $val <BR>n”); } Khi chÂčy ch−¬ng tr×nh sÏ l” : Element 0 equals ca Element 1 equals cr Element 2 equals de Element 3 equals uk Element 4 equals us VĂ­i m¶ng chØ sĂš cĂŁ kiÓu string th× dĂŻng h”m asort (), arsort () ¼Ó sŸp xÕp m¶ng theo chiÒu tšng dÇn v” gi¶m dÇn. NÕu bÂčn dĂŻng cžc h”m sort() v” rsort() th× cžc chØ sĂš cĂŁ kiÓu string sÏ chuyÓn th”nh cžc chØ sĂš cĂŁ kiÓu nguyÂȘn. $countries = array(“us” => “United States”, “uk” => “United Kingdom”, “ca” => “Canada”, “cr” => “Costa Rica”, “de” => “Germany”); asort ($countries); while (list($key, $val) = each($countries)) { echo “Chi so $key bang $val <BR>n”;
  • 29. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 29 } KÕt qu¶ khi chÂčy ch−¬ng tr×nh : Chi so ca bang Canada Chi so cr bang Costa Rica Chi so de bang Germany Chi so uk bang United Kingdom Chi so us bang United States Nh−ng nÕu thay dßng asort ($countries); b»ng sort ($countries); kÕt qu¶ sÏ l” Chi so 0 bang Canada Chi so 1 bang Costa Rica Chi so 2 bang Germany Chi so 3 bang United Kingdom Chi so 4 bang United States §Ó sŸp xÕp m¶ng tšng dÇn hay gi¶m dÇn theo chØ sĂš chĂłng ta cĂŁ h”m ksort() – tšng dÇn v” krsort() – gi¶m dÇn . $countries = array(“e” => “United States”, “d” => “United Kingdom”, “c” => “Canada”, “b” => “Costa Rica”, “a” => “Germany”); ksort ($countries); while (list($key, $val) = each($countries)) { echo “Chi so $key bang $val <BR>n”; } KÕt qu¶ : Chi so a bang Germany
  • 30. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 30 Chi so b bang Costa Rica Chi so c bang Canada Chi so d bang United Kingdom Chi so e bang United States VII. LËp tr×nh h−íng ŸÚi t−üng (OOP) 1. §Þnh nghÜa lĂ­p . ChĂłng ta cĂŁ thÓ ¼Þnh nghÜa lĂ­p b»ng tožn tö class, v” trong mçi mĂ©t lĂ­p chĂłng ta sÏ x©y dĂŽng cžc ph−¬ng thĂžc v” thuĂ©c tÝnh cho lĂ­p Ÿã . Gi¶ sö muĂšn ¼Þnh nghÜa lĂ­p “Sesssion” chĂłng ta l”m nh− sau : <?php class Session { // §Þnh nghÜa cžc thuĂ©c tÝnh v” ph−¬ng thĂžc // X©y dĂčng cžc ph−¬ng thĂžc cho lĂ­p } // KÕt thĂłc mĂ©t lĂ­p ?> §Ó ¼Þnh nghÜa thuĂ©c tÝnh cho lĂ­p chĂłng ta ¼Æt tĂ” khož var tr−íc thuĂ©c tÝnh Ÿã. <? class Session { var $sqlhost = “localhost”; var $sqluser = “root”; var $sqlpass = “password”; var $sqldb = “session”;
  • 31. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 31 var $linkid; var $seshid; var $sessdata; var $userid; var $error_no; var $err; ... // §Þnh nghÜa cžc ph−¬ng thĂžc Ă« Ÿ©y } //KÕt thĂłc ¼Þnh nghÜa lĂ­p ?> TiÕp theo chĂłng ta sÏ ¼Þnh nghÜa cžc ph−¬ng thĂžc cho lĂ­p trÂȘn. Ph−¬ng thĂžc cÇn x©y dĂčng ¼Çu tiÂȘn l” Session() sau Ÿã ¼Õn cžc ph−¬ng thĂžc khžc. <? // §Þnh nghÜa lĂ­p Session class Session { // §Þnh nghÜa cžc thuĂ©c tÝnh .. . // §Þnh nghÜa cžc ph−¬ng thĂžc function Session($localSeshID, $localUserID=0) { $this->seshid = $localSeshID; $this->userid = $localUserID; // KÕt nĂši tĂ­i MySQL $this->linkid=mysql_connect($this->sqlhost, $this->sqluser, $this- >sqlpass);
  • 32. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 32 if (!$this->linkid) { $this->err=mysql_error(); $this->error_no=102; } } ... // §Þnh nghÜa cžc ph−¬ng thĂžc khžc } ?> 2. Sö dĂŽng lĂ­p Ÿ· ¼−üc ¼Þnh nghÜa. §Ó khai bžo mĂ©t ŸÚi t−üng cĂŁ kiÓu thuĂ©c lĂ­p Ÿ· x©y dĂčng ta dĂŻng tožn tö new nh− sau : <?php require (“classes/sessions.php”); //include class $mysesh = new Session($seshid); if ($mysesh->error_no) { //Th«ng bžo cĂŁ lçi } $user = $mysesh->sessdata[userid]; ?> <HTML> <HEAD> <TITLE>Welcome to my website, <? echo $user ?></TITLE> </HEAD> <BODY> <a href=”nextpage.php?seshid=<? print $user ?>”>Next Page </a>
  • 33. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 33 <FORM ACTION=”nextpage.php” METHOD=”POST”> <input type=”hidden” name=”seshid” value=”<? print $seshid ?>”> </FORM> </BODY> </HTML> VIII. T×m hiÓu thÂȘm vÒ HTML PhÇn mĂ©t chĂłng ta Ÿ· t×m hiÓu sÂŹ l−üc vÒ ng«n ngĂ· HTML. Trong mĂŽc n”y chĂłng ta sÏ tr×nh b”y thÂȘm vÒ nĂŁ vĂ­i trĂ€ng t©m l” FORM cña HTML. LĂœ do l” v× khi muĂšn giao tiÕp giĂ·a HTML v” PHP script th× kh«ng thÓ kh«ng biÕt ¼Õn FORM. FORM l” c«ng cĂŽ phĂŠ biÕn nhÊt ¼Ó chuyÓn dĂ· liÖu tĂ” HTML ¼Õn PHP script (client lÂȘn server). Th«ng th−ĂȘng, khi viÕt mĂ©t script, ng−ĂȘi ta thiÕt kÕ mĂ©t FORM sao cho nĂŁ cung cÊp ¼Çy Ÿñ nhĂ·ng th«ng tin m” script cÇn ¼Ó xö lĂœ. 1. CÊu trĂłc cña mĂ©t FORM MĂ©t FORM ¼−üc mĂ« ¼Çu b»ng thÎ <FORM ... > v” kÕt thĂłc b»ng thÎ </FORM>. Trong FORM cĂŁ : - ThuĂ©c tÝnh : FORM th−ĂȘng cĂŁ ba thuĂ©c tÝnh, ba thuĂ©c tÝnh n”y n»m trong thÎ FORM mĂ« ¼Çu cña mĂ©t FORM : action, method, enctype . - Cžc thÎ ¼−üc dĂŻng trong FORM : input, select, textarea, hn, p, hr, dir, dl, menu, ol, ul, address, blockquote, [isindex]. pre . - FORM cĂŁ ba th”nh phÇn chÝnh : textarea, select, input . - FORM cĂŁ thÓ ¼−üc dĂŻng trong cžc thÎ : blockquote,body,dd, li. 2. Cžc thuĂ©c tÝnh Khi tÂčo mĂ©t FORM ,c«ng viÖc ¼Çu tiÂȘn l” xžc ¼Þnh thuĂ©c tÝnh cña nĂŁ. - ThuĂ©c tÝnh action : Action=”URL” chØ ¼Õn script m” FORM sö dĂŽng. Ngo”i ra nĂŁ cĂČng cĂŁ thÓ l” mailto url, khi Ÿã nĂ©i dung cña FORM ¼−üc mail ¼Õn ¼Þa chØ trong url .
  • 34. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 34 - ThuĂ©c tÝnh method : Method cĂŁ thÓ ¼−üc gžn b»ng “GET” hoÆc “POST” ,nĂŁ chØ ra ph−¬ng thĂžc Post hay Get sÏ ¼−üc sö dĂŽng trong FORM, giž trÞ ngÇm ¼Þnh l” Get. - ThuĂ©c tÝnh enctype : Enctype=”Mime_type” :chØ ra loÂči dĂ· liÖu sÏ göi Âźi. Giž trÞ ngÇm ¼Þnh l” application/x-www-form-urlencode. Trong mĂ©t trang chĂłng ta cĂŁ thÓ sö dĂŽng nhiÒu FORM nhng kh«ng ¼−üc lĂ„ng chĂłng v”o nhau. 2. Cžc th”nh phÇn cÂŹ b¶n cña FORM. MĂ©t FORM ,th«ng th−ĂȘng cĂŁ ba th”nh phÇn chÝnh : +Textarea +Select +Input a - Textarea §−üc bŸt ¼Çu b»ng thÎ <Texterea> v” kÕt thĂłc b»ng thÎ </Texterea>. BÂȘn trong chĂža cžc kĂœ tĂč, thÎ n”y ¼−üc dĂŻng lĂ„ng v”o trong FORM. Cžc thuĂ©c tÝnh cña Texterea . - Name : §Þnh nghÜa tÂȘn cña th”nh phÇn, thuĂ©c tÝnh n”y lu«n lu«n ph¶i cĂŁ. - Rows : Cho biÕt sĂš h”ng cña hĂ©p všn b¶n. - Cols : Cho biÕt sĂš cĂ©t cña všn b¶n. Wrap : ChØ ra cžch xö lĂœ word_wraping (cšn chiÒu d”i cña dßng všn b¶n theo kÝch th−íc cña hĂ©p všn b¶n) trong hĂ©p thoÂči. NÕu wrap=”off”, chĂžc nšng word_wraping bÞ cÊm. NÕu wrap=”vitual”, chĂžc nšng n”y ¼−üc bËt lÂȘn, khi gĂą všn b¶n v”o, ta thÊy con trĂĄ tĂč Ÿéng xuĂšng h”ng mçi khi nĂŁ chÂčy ¼Õn biÂȘn cña hĂ©p všn b¶n, kĂœ tĂč newline (OA hex) tĂč Ÿéng ¼−üc thÂȘm v”o nh−ng kh«ng ¼−üc göi Âźi cĂŻng FORM. NÕu wrap=”physical”, chĂžc nšng n”y cĂČng ¼−üc bËt v” hoÂčt Ÿéng nh− trÂȘn nh−ng kĂœ tĂč newline ¼−üc göi Âźi cĂŻng vĂ­i FORM.
  • 35. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 35 Všn b¶n n»m giĂ·a hai thÎ <Texterea> v” </Texterea> sÏ ¼−üc thÓ hiÖn nh− ÂźoÂčn všn b¶n ngÇm ¼Þnh trong vĂŻng dĂ· liÖu. VÝ dĂŽ: <Texterea name=”van_ban” rows=”4” cols=”40”> .. . </ Texterea > b. Select §−üc bŸt ¼Çu b»ng thÎ <Select> v” kÕt thĂłc b»ng thÎ </ Select >, cÆp thÎ n”y cĂŁ thÓ lĂ„ng trong FORM hay bÊt kĂș th”nh phÇn n”o cña FORM ngoÂči trĂ” Texterea v” Select . Select cĂŁ cžc thuĂ©c tÝnh sau : - Name : TÂȘn cña th”nh phÇn. - Size : Cho biÕt sĂš th”nh phÇn sÏ hiÓn thÞ, giž trÞ ngÇm ¼Þnh l” 1, do Ÿã danh sžch lĂča chĂ€n th−ĂȘng ¼−üc thÓ hiÖn dĂ­i dÂčng pop-up menu. ThuĂ©c tÝnh n”y cĂŁ thÓ kh«ng cĂŁ. - Multiple : NÕu thuĂ©c tÝnh n”y ¼−üc thiÕt lËp, nhiÒu lĂča chĂ€n sÏ ¼−üc chĂ€n cĂŻng mĂ©t lĂłc, ng−üc lÂči chØ ¼−üc chĂ€n mĂ©t item. Khi sö dĂŽng Select, chĂłng ta cĂŁ thÓ dĂŻng thÂȘm Option <Option>. .. .. .. </Option> BÂȘn trong chĂža cžc kĂœ tĂč, cĂŁ thÓ ¼−üc sö dĂŽng lĂ„ng v”o Select . Cžc thuĂ©c tÝnh Option : - Disable : §žnh mĂ©t lĂča chĂ€n bÞ cÊm. Khi hiÓn thÞ, chĂ€n lĂča n”y sÏ bÞ che mĂȘ. - Selected : §žnh dÊu chĂ€n lĂča n”y Ÿ· ¼−üc chĂ€n, nÕu thuĂ©c tÝnh Multiple ¼−üc bËt trong Select, bÂčn cĂŁ thÓ Ÿžnh dÊu Selected nhiÒu chĂ€n lĂča cĂŻng lĂłc. NĂŁ dĂŻng ¼Ó Ÿžnh dÊu cžc lĂča chĂ€n ngÇm ¼Þnh. - Value : ChØ ra giž trÞ ¼−üc gžn cho lĂča chĂ€n, nÕu kh«ng cĂŁ th× nĂ©i dung cña th− mĂŽc option sÏ ¼−üc göi Âźi thay cho value. c. Input
  • 36. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 36 MĂ« ¼Çu b»ng thÎ < Input >, thÎ n”y cĂŁ thÓ dĂŻng trong bÊt cĂž th”nh phÇn n”o khžc cña FORM ngoÂči trĂ” Texterea v” Select. Cžc thuĂ©c tÝnh : - Align : CĂŁ thÓ l” mĂ©t trong ba giž trÞ top, middle, bottom dĂŻng ¼Ó cšn lÒ ¶nh vĂ­i cžc všn b¶n xung quanh, thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i Type=“image” . - Name : gŸn tÂȘn biÕn cho dĂ· liÖu cña th”nh phÇn n”y. Giž trÞ cña thuĂ©c tÝnh do user lĂča chĂ€n . - Type : ¼Þnh ra mĂ©t trong nhĂ·ng giž trÞ sau checkbox, hidden, image, password, radio, reset, submit, text, file, bottom . - Checked : chØ ra mĂ©t nĂłt radio, hay mĂ©t checkbox cÂŹ ¼−üc chĂ€n hay kh«ng. - Maxlength : chØ ra chiÒu d”i tĂši Âźa m” hĂ©p thoÂči všn b¶n cĂŁ thÓ chĂža, thuĂ©c tÝnh n”y chØ cĂŁ Ăœ nghÜa vĂ­i input cĂŁ type=”text” hay type=”password” . - Size : chØ ra kÝch th−íc thĂčc sĂč cña hĂ©p thoÂči všn b¶n. IX. TĂŁm l−üc Nh− vËy, chĂłng ta Ÿ· kh¶o sžt hÇu hÕt cžc chĂžc nšng cÂŹ b¶n cña PHP, tĂ” cžc kiÓu dĂ· liÖu, khai bžo biÕn, h”ng, m¶ng cho tĂ­i cžch thĂčc hiÖn ch−¬ng tr×nh dÂčng Mžy khžch/Mžy chñ (Client/Server), v” nhĂłng cžc ÂźoÂčn m· PHP v”o cžc trang HTML .v.v. Nh− trÂȘn chĂłng ta Ÿ· tr×nh b”y, cÂŹ sĂ« dĂ· liÖu cho trang Web l” th”nh phÇn kh«ng thÓ thiÕu, nĂŁ Ÿãng vai trß quyÕt ¼Þnh cho ch−¬ng tr×nh. VÝ lĂœ do Ÿã, phÇn tiÕp theo chĂłng ta sÏ kh¶o sžt ng«n ngĂ· SQL v” cžc h”m API cña PHP ¼Ó thĂčc hiÖn cžc lÖnh truy vÊn trÂȘn hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL. X. Cžc h”m API trong PHP 1. GiĂ­i thiÖu vÒ MySQL . PHP hç trĂź mĂ©t sĂš l−üng lĂ­n cžc h”m l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu nh Oracle, Sybase, PostgreSQL, MySQL. .. Th«ng qua chuÈn ODBC (Open Database Connectivity), b»ng cžch sö dĂŽng cžc h”m API (Application
  • 37. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 37 Programming Interface) m” PHP cĂŁ thÓ l”m viÖc ¼−üc vĂ­i nhiÒu hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu nh− vËy. NÕu hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu kh«ng hç trĂź ODBC ,v” hÂŹn nĂ·a ODBC cĂŁ ¼Æc ÂźiÓm chØ hç trĂź Ă« dÂčng chuÈn th× PHP cĂŁ thÓ l”m viÖc vĂ­i ODBC Ă« tÇng trÂȘn. NÕu kh«ng muĂšn sö dĂŽng ODBC ta cĂŁ thÓ sö dĂŽng cžc h”m API . Trong phÇn n”y chĂłng ta chØ sö dĂŽng cžc h”m API ¼Ó l”m viÖc vĂ­i hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu MySQL . 2. Cžc h”m cÂŹ b¶n l”m viÖc vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL. a) Cžc h”m kÕt nĂši ¼Õn MySQL Server PHP cung cÊp hai h”m ¼Ó kÕt nĂši vĂ­i cÂŹ sĂ« dĂ· liÖu MySQL : mysql_connect v” mysql_pconnect . + mysql_connect () : h”m n”y sÏ tÂčo ra mĂ©t liÂȘn kÕt tĂ­i mžy chñ MySQL . CĂł phžp : int mysql_connect (string [hostname [:port] [:/path_to_socket]], string [username], string [password]); Trong Ÿã : - hostname : TÂȘn mžy chñ cÂŹ sĂ« dĂ· liÖu, nÂŹi trang web sÏ chĂža cÂŹ sĂ« dĂ· liÖu. Giž trÞ ngÇm ¼Þnh l” “localhost’” - :port : §Þa chØ cĂŠng, nÂŹi bĂ© mžy cÂŹ sĂ« dĂ· liÖu lŸng nghe yÂȘu cÇu. Giž trÞ ngÇm ¼Þnh l” “:3306” . - :/path_to_socket : CĂČng giĂšng nh− :port nh−ng chØ cho hÖ ÂźiÒu h”nh UNIX. Giž trÞ ngÇm ¼Þnh l” “:/tmp/mysql.sock” . - username : TÂȘn cña ng−ĂȘi sö dĂŽng ¼−üc phÐp kÕt nĂši v”o bĂ© mžy cÂŹ sĂ« dĂ· liÖu. - password : MËt khÈu cña ng−ĂȘi sö dĂŽng ¼Ó kÕt nĂši v”o bĂ© mžy cÂŹ sĂ« dĂ· liÖu. H”m n”y tr¶ vÒ m· sĂš nhËn dÂčng nÕu kÕt nĂši th”nh c«ng, giž trÞ 0 (false) nÕu viÖc kÕt nĂši cĂŁ lçi. M· sĂš nhËn dÂčng n”y sÏ ¼−üc sö dĂŽng cho tÊt c¶ cžc yÂȘu cÇu tĂ­i bĂ© mžy cÂŹ sĂ« dĂ· liÖu sau n”y.
  • 38. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 38 SĂč kÕt nĂši n”y sÏ Ÿãng lÂči khi gĂ€i h”m mysql_close() hoÆc kÕt thĂłc ÂźoÂčn PHP script. + mysql_pconnect() : H”m n”y tÂčo ra mĂ©t liÂȘn kÕt bÒn vĂ·ng vĂ­i mžy chñ MySQL. CĂł phžp : int mysql_pconnect (string [hostname [:port] [:/path_to_socket]], string [username], string [password]); Tham sĂš v” giž trÞ tr¶ vÒ cña h”m n”y cĂČng giĂšng h”m mysql_connect(). SĂč khžc biÕt giĂ·a hai h”m n”y l” liÂȘn kÕt tĂ­i mžy chñ MySQL kh«ng bÞ Ÿãng lÂči kÓ c¶ khi kÕt thĂłc kÞch b¶n (script) PHP hay gĂ€i h”m mysql_close(). MĂŽc ¼Ých cña h”m n”y l” lu«n lu«n duy tr× liÂȘn kÕt tĂ­i mžy chñ MySQL do lu«n cĂŁ sĂč yÂȘu cÇu tĂ­i mžy chñ, tržnh cho mžy chñ ph¶i t×m kiÕm m· sĂš nhËn dÂčng mĂ­i tĂ” Ÿã gi¶m thĂȘi gian truy cËp . ChĂł Ăœ : h”m n”y chØ thĂčc hiÖn ¼−üc khi PHP ¼−üc ¼Þnh cÊu h×nh nh− l” mĂ©t module cña Web server . + mysql_close() : H”m n”y huĂ» bĂĄ sĂč kÕt nĂši tĂ­i mžy chñ MySQL . CĂł phžp : int mysql_close(int [link_identifier]); Tham sĂš link_identifier l” m· sĂš nhËn dÂčng tÂčo ra bĂ«i h”m mysql_connect(). H”m tr¶ vÒ l” True nÕu th”nh c«ng, ng−üc lÂči l” False . b) Cžc h”m thao tžc trÂȘn CSDL + mysql_create_db() : H”m tÂčo cÂŹ sĂ« dĂ· liÖu CĂł phžp : int mysql_create_db(string name, int [link_identifier]) ; Trong Ÿã : - string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn tÂčo. - int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() . ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó tÂčo cÂŹ sĂ« dĂ· liÖu th«ng qua h”m mysql_query() .
  • 39. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 39 + mysql_drop_db() : H”m xož cÂŹ sĂ« dĂ· liÖu CĂł phžp : int mysql_drop_db(string name, int [link_identifier]); Trong Ÿã : - string name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu cÇn xož . - int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() . ChĂłng ta ho”n to”n cĂŁ thÓ göi c©u lÖnh SQL ¼Ó xož cÂŹ sĂ« dĂ· liÖu th«ng qua h”m mysql_query(). + mysql_select_db() : H”m cho cÂŹ sĂ« dĂ· liÖu hoÂčt Ÿéng . CĂł phžp : int mysql_select_db(string database_name, int [link_identifier]); Trong Ÿã: - database_name : TÂȘn cña cÂŹ sĂ« dĂ· liÖu m” sau n”y cžc h”m API khžc cña PHP sÏ thĂčc hiÖn trÂȘn Ÿã. - int link_identifier : M· nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect(). C©u lÖnh n”y sÏ gŸn tÂȘn cÂŹ sĂ« dĂ· liÖu vĂ­i m· nhËn dÂčng, sau n”y khi l”m viÖc vĂ­i link_identifier sÏ bao gĂ„m c¶ cÂŹ sĂ« dĂ· liÖu ¼−üc chĂ€n . c) Cžc h”m thao tžc trÂȘn dĂ· liÖu + mysql_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL . CĂł phžp : int mysql_query(string query, [int link_identifier]) ; Trong Ÿã : - string query : C©u lÖnh SQL cÇn göi tĂ­i mžy chñ MySQL . - int link_identifier : M· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn trong h”m mysql_select_db() tr−íc Ÿã . + mysql_db_query() : H”m göi c©u lÖnh SQL tĂ­i mžy chñ MySQL . CĂł phžp :
  • 40. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 40 int mysql_db_query(string database, string query, int [link_identifier]); Trong Ÿã : - string database : TÂȘn cÂŹ sĂ« dĂ· liÖu c©u lÖnh SQL sÏ thĂčc hiÖn trÂȘn Ÿã. - string query : C©u lÖnh SQL cÇn thĂčc hiÖn . - link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() H”m n”y chØ rĂą c©u lÖnh ¼−üc thĂčc hiÖn trÂȘn cÂŹ sĂ« dĂ· liÖu n”o nÂȘn tr−íc Ÿã kh«ng cÇn thĂčc hiÖn h”m mysql_select_db(); +mysql_insert_id() : H”m lÊy giž trÞ ¼−üc sinh ra tĂ” c©u truy vÊn INSERT trĂ­c CĂł phžp : int mysql_insert_id([link_identifier]) ; trong Ÿã: int link_identifier : M· sĂš nhËn dÂčng ¼−üc cÊp bĂ«i h”m mysql_connect() . H”m n”y tr¶ vÒ giž trÞ id ¼−üc sinh ra trong cĂ©t AUTO_INCREMENT bĂ«i c©u truy vÊn tr−íc Ÿã. §iÒu n”y chØ cĂŁ tžc dĂŽng trÂȘn link_identifier ¼−üc chØ ra trong h”m, nÕu gĂ€i h”m trÂȘn m” kh«ng chØ ¼Þnh tham sĂš link_identifier th× liÂȘn kÕt ¼−üc mĂ« cuĂši cĂŻng sÏ ¼−üc chØ ¼Þnh. H”m mysql_insert_id() tr¶ vÒ giž trÞ 0 nÕu c©u truy vÊn tr−íc Ÿã kh«ng sinh ra mĂ©t giž trÞ AUTO_INCREMENT. NÕu ta muĂšn giĂ· lÂči giž trÞ cho lÇn sau, th× ph¶i gĂ€i h”m n”y ngay sau c©u truy vÊn sinh ra giž trÞ . + mysql_fetch_row() : H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči vĂ­i chØ sĂš l” sĂš thĂž tĂč cña cžc tr−ĂȘng (chØ sĂš bŸt ¼Çu tĂ” 0). Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt : tÂȘn_m¶ng[sĂš thĂž tĂč] CĂł phžp : array mysql_fetch_row( int result_identifier);
  • 41. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 41 Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . VÝ dĂŽ : <?php $mysql = “select id, name from ds_thanhvien”; // cau lenh SQL $link = mysql_connect($host, $user, $password); //lay ma mysql_select_db($database_name, $link); $result = mysql_query($mysql ,$link); while ($row = mysql_fetch_row($result)) { echo $row[0] ; echo $row[1]; } ?> + mysql_fetch_array() : H”m tr¶ vÒ mĂ©t m¶ng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn tÂči, sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. CĂł phžp : array mysql_fetch_array( int result_identifier [, int result_type] ); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . §Ó truy xuÊt ¼Õn cžc th”nh phÇn cña cĂ©t : tÂȘn_biÕn_m¶ng[“tÂȘn_trĂȘng”]; result_type l” mĂ©t h»ng sĂš cĂŁ thÓ nhËn cžc giž trÞ sau: -MYSQL_NUM : chØ tr¶ lÂči mĂ©t m¶ng chĂža cžc chØ sĂš l” sĂš (giĂšng nh− h”m mysql_fetch_row() ) -MYSQL_ASSOC: chØ tr¶ lÂči mĂ©t m¶ng liÂȘn kÕt
  • 42. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 42 -MYSQL_BOTH : tr¶ lÂči m¶ng chĂža ÂźĂčng cžc chØ sĂš gĂ„m c¶ cžc con sĂš v” chØ sĂš liÂȘn kÕt . H”m n”y l” sĂč mĂ« rĂ©ng cña h”m mysql_fetch_row(). NĂŁ cho phÐp truy cËp tr−ĂȘng dĂ· liÖu cña m¶ng kÕt qu¶ kh«ng chØ th«ng qua cžc chØ sĂš l” cžc sĂš m” chĂłng cĂŁ thÓ l” tÂȘn cña cžc tr−ĂȘng dĂ· liÖu. §iÒu n”y l”m cho viÖc lËp tr×nh Ÿn gi¶n v” chÝnh xžc hÂŹn. VÝ dĂŽ: <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); while ($row = mysql_fetch_array($result)) { echo “user_id: “. $row[“id”] .“<BR>n”; echo “user_id: “. $row[0] .“<BR>n”; echo “user_name: “. $row[“name”] .“<BR>n”; echo “user_name: “. $row[1] .“<BR>n”; } mysql_free_result ($result); ?> + mysql_fetch_object() : H”m tr¶ vÒ mĂ©t ŸÚi t−üng l” giž trÞ cña mĂ©t b¶ng ghi hiÖn thĂȘi. Sau Ÿã h”m sÏ trĂĄ tĂ­i b¶ng ghi tiÕp theo cho tĂ­i khi gÆp b¶ng ghi cuĂši cĂŻng h”m tr¶ vÒ giž trÞ false. §Ó truy xuÊt tĂ­i cžc giž trÞ cña cĂ©t ta viÕt tÂȘn_object->tÂȘn_cĂ©t . CĂł phžp : object mysql_fetch_object(int result_identifier); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . VÝ dĂŽ :
  • 43. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 43 <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); while ($row = mysql_fetch_object($result)) { echo $row->id ; echo $row->name; } ?> +mysql_fetch_assoc() :lÊy vÒ mĂ©t dßng kÕt qu¶ nh− l” mĂ©t m¶ng liÂȘn kÕt . cĂł phžp: array mysql_fetch_assoc(int result_identifier) Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query() hoÆc mysql_db_query() . H”m tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i mĂ©t b¶n ghi ¼−üc lÊy vÒ v” tr¶ lÂči FALSE nÕu kh«ng cĂŁ b¶n ghi n”o. H”m n”y t−¬ng ¼−¬ng vĂ­i h”m array mysql_fetch_array() vĂ­i tham sĂš result_type l” : MYSQL_ASSOC vÝ dĂŽ : <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); while ($row = mysql_fetch_assoc($result)) { echo $row[“id”]; echo $row[“name”]; } ?>
  • 44. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 44 +mysql_data_seek() Di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (cĂŁ ¼−üc sau khi c©u truy vÊn SELECT ¼−üc thĂčc hiÖn) CĂł phžp: bool mysql_data_seek(int result_identifier, int row_number); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . row_number l” chØ sĂš cña b¶n ghi m” cÇn ¼Æt con trĂĄ v”o . H”m tr¶ vÒ true nÕu th”nh c«ng, false nÕu lçi . H”m n”y sÏ di chuyÓn con trĂĄ bÂȘn trong “tËp kÕt qu¶” (¼−üc chØ rĂą bĂ«i tham ŸÚi result_identifier) ¼Õn dßng cĂŁ m· b»ng tham ŸÚi row_number. Cžc dßng trong tËp kÕt qu¶ ¼−üc bŸt ¼Çu tĂ” 0 VÝ dĂŽ: <?php $link = mysql_pconnect ($host, $user, $password) or die ("Could not connect"); $query = "SELECT last_name, first_name FROM friends"; $result = mysql_db_query (“php”,$query) or die ("Query failed"); # fetch rows in reverse order for ($i = mysql_num_rows ($result) - 1; $i >=0; $i--) { if (! Mysql_data_seek ($result, $i)) { printf ("Cannot seek to row %dn", $i); continue; } if(!($row = mysql_fetch_object ($result))) continue; printf ("%s %s<BR>n", $row->last_name, $row->first_name); } mysql_free_result ($result); ?>
  • 45. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 45 + mysql_num_rows() :tr¶ lÂči sĂš dßng trong result_identifier (nÂŹi chĂža kÕt qu¶ cña c©u lÖnh SQL Ÿ· ¼−üc thĂčc hiÖn) cĂł phžp: mysql_num_rows(int result_identifier) ; Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . +mysql_affected_rows() cĂł phžp : int mysql_affected_rows(int [link_identifier]) ; Trong Ÿã :int link_identifier l” m· sĂš nhËn dÂčng, nĂŁ ph¶i ¼−üc thĂčc hiÖn trong h”m mysql_select_db() tr−íc Ÿã . H”m tr¶ vÒ sĂš dßng Ÿ· bÞ tžc Ÿéng bĂ«i mĂ©t c©u truy vÊn SQL :INSERT, UPDATE, DELETE tr−íc Ÿã theo tham sĂš link_identifier. NÕu link_identifier kh«ng ¼−üc chØ ¼Þnh th× m· kÕt nĂši tr−íc Ÿã sÏ ¼−üc chØ ¼Þnh. ChĂł Ăœ : - NÕu c©u lÖnh SQL tr−íc Ÿã l” DELETE m” kh«ng cĂŁ mÖnh ¼Ò WHERE th× to”n bĂ© cžc b¶n ghi trong b¶ng Ÿ· bÞ xož nh−ng h”m mysql_affected_rows() sÏ tr¶ vÒ gižn trÞ 0. -H”m n”y kh«ng cĂŁ tžc dĂŽng ŸÚi vĂ­i c©u lÖnh truy vÊn SELECT. §Ó lÊy ¼−üc sĂš dßng tr¶ vÒ (sĂš dßng Ÿ· bÞ tžc Ÿéng) bĂ«i c©u lÖnh SELECT ta dĂŻng h”m mysql_num_rows(). +mysql_result() : lÊy dĂ· liÖu tĂ” result_identifier cĂł phžp : mixed mysql_result(int result_identifier, int row, mixed [field]); Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . row l” b¶n ghi m” ta sÏ lÊy dĂ· liÖu field l” tr−ĂȘng trong dßng row m” ta sÏ lÊy dĂ· liÖu . Cžc tham sĂš result_identifier v” row ph¶i cĂŁ, cßn tham field l” tĂŻy chĂ€n. H”m sÏ tr¶ lÂči cžc nĂ©i dung cña dßng row v” cĂ©t field tĂ” tËp kÕt qu¶ ¼−üc chØ ¼Þnh bĂ«i biÕn result_identifier. NÕu ŸÚi sĂš field kh«ng ¼−üc chØ ¼Þnh rĂą th× tr−ĂȘng tiÕp theo cña b¶n ghi sÏ ¼−üc tr¶ vÒ .
  • 46. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 46 VÝ dĂŽ: <?php $mysql = “select id, name from ds_thanhvien”; $link = mysql_connect($host, $user, $password); $result = mysql_db_query(“php”, $mysql); echo “ mysql_result($result, 0, “id”) <BR>n”; echo “ mysql_result($result, 0, “name”) <BR>n”; ?> +mysql_free_result() : H”m gi¶i phĂŁng vĂŻng bĂ© nhĂ­ ¼−üc liÂȘn kÕt vĂ­i result_identifier . cĂł phžp: mysql_free_result(int result_identifier) ; Trong Ÿã : result_identifier l” m· sĂš tr¶ vÒ cña h”m mysql_query(), mysql_db_query(), mysql_list_tables(), mysql_list_dbs() . H”m n”y chØ ¼−üc dĂŻng nÕu nh− bÂčn Ÿžnh giž thÊy r»ng kÞch b¶n cña bÂčn sö dĂŽng quž nhiÒu bĂ© nhĂ­ khi Âźang chÂčy. GĂ€i h”m n”y trÂȘn mĂ©t tr×nh xö lĂœ kÕt qu¶ sÏ gi¶i phĂŁng to”n bĂ© dĂ· liÖu liÂȘn kÕt trong bĂ© nhĂ­ . Ngo”i ra cßn cžc h”m khžc: string mysql_tablename (int result_identifier, int i) H”m tr¶ lÂči tÂȘn cña b¶ng/csdl tÂči chØ sĂš i trong result_identifier. string mysql_field_name (int result_identifier, int field_index) H”m tr¶ lÂči tÂȘn cña tr−ĂȘng tÂči vÞ trÝ field_index trong m· result_identifier int mysql_list_dbs ([int link_identifier]) H”m tr¶ lÂči mĂ©t result_identifier l” danh sžch biÕn CSDL trÂȘn MySQL Server nÕu th”nh c«ng, lçi tr¶ vÒ false . int mysql_list_tables (string database [, int link_identifier]) H”m tr¶ vÒ danh sžch tÊt c¶ c©c b¶ng trong mĂ©t CSDL MySQL, th”nh c«ng tr¶ vÒ mĂ©t result identifier, giž trÞ false nÕu cĂŁ lçi .
  • 47. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 47 int mysql_list_fields (string database_name, string table_name [, int link_identifier]) H”m tr¶ vÒ th«ng tin liÂȘn quan ¼Õn mĂ©t b¶ng dĂ· liÖu. int mysql_num_fields (int result_identifier) Tr¶ vÒ sĂš tr−ĂȘng trong tËp kÕt qu¶ . int mysql_num_rows (int result_identifier) Tr¶ vÒ sĂš b¶n ghi trong tËp kÕt qu¶, h”m n”y chØ cĂŁ giž ŸÚi vĂ­i cžc c©u lÖnh SELECT ,¼Ó lÊy lÂči sĂš b¶n ghi ¼−üc tr¶ lÂči tĂ” cžc lÖnh :INSERT, UPDATE hoÆc DELETE, dĂŻng mysql_affected_rows(). string mysql_field_type (int result_identifier, int field_index) H”m tr¶ vÒ kiÓu dĂ· liÖu cña tr−ĂȘng tÂči vÞ trÝ field_index trong m· result_identifier . int mysql_field_len (int result_identifier, int field_offset) H”m tr¶ vÒ Ÿé d”i cña tr−ĂȘng ¼−üc chØ ¼Þnh th«ng qua tham sĂš field_offset . array mysql_fetch_lengths (int result_identifier) tr¶ vÒ mĂ©t m¶ng t−¬ng Ăžng vĂ­i cžc Ÿé d”i cña mçi tr−ĂȘng trong b¶n ghi ¼−üc lÊy vÒ bĂ«i h”m mysql_fetch_row() hoÆc false nÕu cĂŁ lçi. int mysql_errno ([int link_identifier]) H”m tr¶ vÒ m· lçi tĂ” h”m thao tžc CSDL MySQL tr−íc ,tr¶ vÒ giž trÞ 0 nÕu kh«ng cĂŁ lçi . string mysql_error ([int link_identifier]) H”m tr¶ vÒ x©u th«ng bžo lçi tĂ” h”m thao tžc CSDL MySQL tr−íc, tr¶ vÒ x©u rçng nÕu kh«ng cĂŁ lçi . object mysql_fetch_field (int result_identifier [, int field_offset]) LÊy th«ng tin vÒ trĂȘng tĂ” tËp kÕt qu¶ rĂ„i tr¶ lÂči nh mĂ©t ŸÚi t−üng.
  • 48. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 48 XI. Session v” Cookie 1. Session l” g× ? HTTP l” giao thĂžc kh«ng ¼−üc x©y dĂčng theo cžch ¼Ó cĂŁ thÓ lu giĂ· ¼−üc trÂčng thži giĂ·a hai lÇn giao dÞch. Khi mĂ©t ng−ĂȘi dĂŻng yÂȘu cÇu truy nhËp mĂ©t trang Web, rĂ„i sau Ÿã ng−ĂȘi dĂŻng n”y lÂči tiÕp tĂŽc yÂȘu cÇu truy nhËp ŸÚi vĂ­i trang Web khžc th× HTTP kh«ng thÓ biÕt ¼−üc r»ng Ÿã l” hai yÂȘu cÇu tĂ” cĂŻng mĂ©t ng−ĂȘi dĂŻng. Ăœ tâˆ’Ă«ng cña viÖc ÂźiÒu khiÓn phiÂȘn l”m viÖc l” cĂŁ thÓ l−u vÕt cña mĂ©t ng−ĂȘi dĂŻng trong suĂšt mĂ©t phiÂȘn l”m viÖc. NÕu chĂłng ta l”m ¼−üc ÂźiÒu n”y th× sÏ dÔ d”ng cung cÊp mĂ©t truy nhËp cho ng−ĂȘi dĂŻng, tĂ” Ÿã ta cĂŁ thÓ l−u vÕt trÂčng thži cña ng−ĂȘi dĂŻng v” cĂŁ thÓ thĂčc hiÖn viÖc mua bžn trÂȘn mÂčng. Session trong PHP ¼−üc ÂźiÒu khiÓn bĂ«i mĂ©t giž trÞ ID duy nhÊt gĂ€i l” “sessionID”, giž trÞ n”y sÏ ¼−üc tĂč Ÿéng sinh ra v” m· hĂŁa. SessionID ¼−üc sinh ra bĂ«i PHP v” ¼−üc l−u trĂ· Ă« phÝa client trong suĂšt mĂ©t phiÂȘn giao dÞch. NĂŁ cĂŁ thÓ ¼−üc l−u trĂ· trÂȘn cžc Cookie Ă« mžy ng−ĂȘi dĂŻng hay truyÒn lÂȘn cžc URL. SessionID cĂŁ tžc dĂŽng nh− mĂ©t khož ¼Ó bÂčn cĂŁ thÓ Ÿšng kĂœ nhĂ·ng biÕn ¼Æc biÖt gĂ€i l” biÕn session. NĂ©i dung cña nhĂ·ng biÕn n”y ¼−üc chĂža trÂȘn Server. SessionID l” nhĂ·ng th«ng tin chØ thÊy ¼−üc Ă« phÝa client. NÕu tÂči thĂȘi ÂźiÓm n”o Ÿã cña mĂ©t kÕt nĂši ¼Õn trang Web cña bÂčn, sessionID cĂŁ thÓ thÊy ¼−üc trÂȘn cookie hay URL, bÂčn cĂŁ thÓ truy nhËp nhĂ·ng biÕn session chĂž trÂȘn Server Ă« phiÂȘn l”m viÖc Ÿã. 2) Cookie l” g× ? Cookie l” nhĂ·ng mÈu tin nhĂĄ m” trang script cĂŁ thÓ chĂža trÂȘn cžc mžy khžch (client). BÂčn cĂŁ thÓ thiÕt lËp mĂ©t cookie trÂȘn mĂ©t mžy ng−ĂȘi dĂŻng b»ng cžch göi mĂ©t “HTTP header” cĂŁ chĂža dĂ· liÖu theo dÂčng sau: Set-Cookie:Name=VALUE;[expires=DATE;][path=PATH;] [domain=DOMAIN_NAME;][secure] c©u lÖnh n”y sÏ tÂčo ra mĂ©t cookie cĂŁ tÂȘn gĂ€i l” NAME vĂ­i giž trÞ l” VALUE. Tr−ĂȘng expires sÏ thiÕt lËp ng”y m” cookie sÏ hÕt hiÖu lĂčc, path v” domain cĂŁ thÓ ¼−üc sö dĂŽng ¼Ó chØ ¼Þnh cžc URL (nÂŹi m” cookie sÏ ¼−üc göi Âźi). TĂ”
  • 49. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 49 khož secure cĂŁ nghÜa l” cookie sÏ kh«ng göi Âźi trÂȘn quž mĂ©t kÕt nĂši HTTP chuÈn. Khi mĂ©t browser kÕt nĂši tĂ­i mĂ©t URL, trĂ­c tiÂȘn nĂŁ kiÓm tra cžc cookie Ÿ· ¼−üc l−u trĂ· trÂȘn mžy. NÕu cĂŁ bÊt k× mĂ©t cookie n”o cĂŁ liÂȘn quan ¼Õn ¼Þa chØ URL vĂ”a ¼−üc kÕt nĂši, chĂłng sÏ ¼−üc truyÒn trĂ« lÂči cho server. 3) ThiÕt lËp cžc cookie tĂ” PHP Ta cĂŁ thÓ thiÕt lËp cžc cookie trong PHP b»ng cžch sö dĂŽng h”m: int setcookie (string name [,string value [,int expire [,string path [,string domain [, int secure]]]]]); NhĂ·ng tham ŸÚi cña h”m t−¬ng Ăžng vĂ­i nhĂ·ng tham ŸÚi cña Set-Cookie header Ă« trÂȘn. NÕu ta thiÕt lËp cookie nh− sau: setcookie ("TestCookie", "Test Value"); th× khi ng−ĂȘi dĂŻng ¼Õn thšm trang kÕ tiÕp trong site cña ta (hoÆc reload trang hiÖn tÂči) ta sÏ ph¶i truy nhËp v”o biÕn vĂ­i tÂȘn l” "TestCookie" cĂŁ chĂža giž trÞ l” "Test Value", ta chØ cĂŁ thÓ truy nhËp tĂ­i nĂŁ th«ng qua biÕn m¶ng $HTTP_COOKIE_VARS [] cña PHP . Ta cĂŁ thÓ xož mĂ©t cookie b»ng cžch gĂ€i lÂči h”m setcookie() vĂ­i tham ŸÚi nh− sau: tÂȘn cña cookie l” tÂȘn cña cookie cÇn xož v” kh«ng cĂŁ tr−ĂȘng giž trÞ. 4) Sö dĂŽng kÕt hĂźp cookie vĂ­i session §Úi vĂ­i cookie cĂŁ mĂ©t sĂš vÊn ¼Ò sau Ÿ©y: MĂ©t v”i webrowser kh«ng thÓ truy cËp ¼−üc tĂ­i cžc cookie (kh«ng hç trĂź cookie) v” mĂ©t sĂš ng−ĂȘi dĂŻng kh«ng cĂŁ cžc cookie trÂȘn browser cña hĂ€. §©y l” lĂœ do ¼Ó PHP sö dĂŽng c¶ hai cžch thĂžc :cookie v” URL method. Khi sö dĂŽng PHP session, ta sÏ kh«ng ph¶i thiÕt lËp cžc cookie, nhĂ·ng h”m session sÏ l−u giĂ· nhĂ·ng th«ng tin n”y cho chĂłng ta. §Ó xem nĂ©i dung cña cžc cookie Ÿ· ¼−üc thiÕt lËp bĂ«i session ta sö dĂŽng h”m: session_get_cookie_params(). H”m n”y sÏ tr¶ vÒ mĂ©t m¶ng liÂȘn kÕt m” cžc phÇn tö cña m¶ng chĂža cžc th«ng tin nh−: lifetime, path, domain,.. .
  • 50. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 50 §Ó thiÕt lËp cžc tham sĂš cho session cookie ta dĂŻng h”m: void session_set_cookie_params (int lifetime [, string path [, string domain]]) 5) L−u giĂ· sessionID PHP sÏ sö dĂŽng cžc cookie mÆc ¼Þnh cĂŻng vĂ­i session. NÕu cĂŁ thÓ ¼−üc, mĂ©t cookie sÏ ¼−üc thiÕt lËp chĂža SessionID. MĂ©t cžch ¼Ó sö dĂŽng cžc SessionID trÂȘn URL Ÿã l” dÞch PHP cĂŻng vĂ­i lĂča chĂ€n –enable-tran-sid. Cžch nĂ·a l” ta cĂŁ thÓ Âźa sessionID v”o trong thÎ link. SessionID ¼−üc chĂža trong h»ng SID. §Ó l”m ¼−üc ÂźiÒu n”y, ta thÂȘm v”o cuĂši thÎ link h»ng SID ¼Ó dĂŻng nĂŁ nh− l” ph−¬ng thĂžc GET. VÝ dĂŽ: <A HREF = “link.php?<?=SID?>”> H»ng SID l”m viÖc ¼−üc nh− trÂȘn chØ khi ta cÊu h×nh PHP cĂŻng vĂ­i --enable-track-vars. 6) ThĂčc thi nhĂ·ng phiÂȘn l”m viÖc Ÿn gi¶n. NhĂ·ng b−íc cÂŹ b¶n cña viÖc sö dĂŽng session: + BŸt ¼Çu mĂ©t Session + §šng kĂœ nhĂ·ng biÕn Session + Sö dĂŽng biÕn Session + HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session 6.1 BŸt ¼Çu mĂ©t Session Cžch Ÿn gi¶n nhÊt ¼Ó bŸt ¼Çu mĂ©t Session l” dĂŻng h”m: Bool Session_start(); H”m n”y sÏ kiÓm tra xem Ÿ· cĂŁ mĂ©t Session ID n”o Ÿ· ¼−üc tÂčo ra hay ch−a. NÕu ch−a th× nĂŁ sÏ tÂčo ra mĂ©t Session ID, cßn nÕu Ÿ· tĂ„n tÂči mĂ©t Session ID th× thĂčc chÊt nĂŁ chØ lÊy ra nhĂ·ng biÕn Session ¼Ó ta cĂŁ thÓ dĂŻng nĂŁ. H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE.
  • 51. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 51 ChĂłng ta cĂČng cĂŁ thÓ bŸt ¼Çu mĂ©t Session b»ng cžch cÊu h×nh PHP ¼Ó nĂŁ tĂč Ÿéng bŸt ¼Çu khi cĂŁ ai Ÿã thšm trang Web cña ta. §iÒu n”y cĂŁ thÓ l”m ¼−üc nÕu ta chĂ€n session. auto_start trong file c:Windowsphp.ini MĂ©t Session cĂČng sÏ ¼−üc bŸt ¼Çu khi ta Ÿšng kĂœ mĂ©t biÕn Session. 6.2 §šng kĂœ nhĂ·ng biÕn Session §Ó cho mĂ©t biÕn cĂŁ thÓ l−u dÊu th«ng tin tĂ” mĂ©t trang script n”y sang trang script khžc, ta cÇn ph¶i Ÿšng kĂœ nĂŁ b»ng cžch gĂ€i h”m: bool session_register(mixed VarName [,mixed...]); ViÖc Ÿšng kĂœ n”y sÏ l−u trĂ· tÂȘn biÕn v” ghi giž trÞ cña biÕn cho ¼Õn khi phiÂȘn giao dÞch kÕt thĂłc hoÆc khi ta huĂ» bĂĄ (deregister) viÖc Ÿšng kĂœ biÕn Ÿã. VÝ dĂŽ: §Ó Ÿšng kĂœ biÕn $Var_name ta viÕt nh− sau: $Var_name= 5; session_register(“Var_name”);// kh«ng nÂȘn sö dĂŽng kĂœ tĂč $ trong Ÿšng kĂœ mĂ©t biÕn 6.3 Sö dĂŽng biÕn Session §Ó Âźa mĂ©t biÕn Session v”o trong phÂčm vi m” nĂŁ cĂŁ thÓ ¼−üc sö dĂŽng, ta cÇn ph¶i khĂ«i tÂčo mĂ©t Session b»ng mĂ©t trong nhĂ·ng cžch Ÿ· nÂȘu trÂȘn. Sau Ÿã, ta cĂŁ thÓ truy cËp ¼−üc nhĂ·ng biÕn n”y. NÕu Ÿ· Ÿšng kĂœ biÕn n”y l” to”n cĂŽc b»ng cžch sö dĂŽng h”m register_global(), th× ta cĂŁ thÓ truy nhËp biÕn b×nh th−ĂȘng th«ng qua tÂȘn biÕn, vÝ dĂŽ : $Var_name ; NÕu kh«ng khai bžo biÕn l” to”n cĂŽc th× ta ph¶i truy nhËp nhĂ·ng biÕn Session th«ng qua m¶ng liÂȘn kÕt $HTTP_SESSION_VARS(“Var_name”); §Ó kiÓm tra xem mĂ©t biÕn Ÿ· ¼−üc Ÿšng kĂœ l” biÕn Session hay ch−a ta dĂŻng h”m: bool session_is_registered (string name); H”m n”y tr¶ vÒ giž trÞ TRUE nÕu biÕn Ÿ· ¼−üc Ÿšng kĂœ, ng−üc lÂči tr¶ vÒ giž trÞ FALSE. Ta cĂČng cĂŁ thÓ kiÓm tra mĂ©t biÕn cĂŁ l” biÕn Session b»ng cžch kiÓm tra m¶ng liÂȘn kÕt $HTTP_SESSION_VARS() vÒ sĂč tĂ„n tÂči cña biÕn.
  • 52. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 52 6.4 HuĂ» bĂĄ biÕn Session v” kÕt thĂłc Session Khi muĂšn kÕt thĂłc mĂ©t biÕn Session, ta cĂŁ thÓ huĂ» bĂĄ Ÿšng kĂœ cña biÕn Ÿã b»ng h”m : bool session_unregister (string name) ; Trong Ÿã: name l” tÂȘn biÕn ta muĂšn huĂ» Ÿšng kĂœ (tÂȘn n”y kh«ng cÇn cĂŁ kĂœ tĂč $) H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng ,ng−üc lÂči tr¶ vÒ giž trÞ FALSE. H”m n”y chØ cĂŁ thÓ huĂ» Ÿšng kĂœ cña mĂ©t biÕn Session tÂči mĂ©t thĂȘi ÂźiÓm. §Ó huĂ» tÊt c¶ cžc biÕn Session hiÖn tÂči, ta dĂŻng h”m: void session _unset ( ) ; §Ó kÕt thĂłc mĂ©t Session ta dĂŻng h”m:s bool session_destroy () ; H”m n”y sÏ xož Âźi SessionID v” hñy tÊt c¶ nhĂ·ng dĂ· liÖu liÂȘn quan ¼Õn Session n”y. H”m tr¶ vÒ giž trÞ TRUE nÕu th”nh c«ng, ng−üc lÂči tr¶ vÒ giž trÞ FALSE. Ta nÂȘn hñy tÊt c¶ cžc biÕn Session tr−íc khi kÕt thĂłc mĂ©t Session.
  • 53. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 53 Ch−¬ng III : Ph−¬ng phžp Fast Template trong PHP I. Cžc kÜ thuËt mÉu phĂŠ biÕn Cžc mÉu cĂŁ thÓ ¼−üc dĂŻng nÕu nh− bÂčn Âźang thĂčc hiÖn mĂ©t site th−ĂȘng xuyÂȘn sö dĂŽng lÂči cžc th”nh phÇn .Trong phÂčm vi cña PHP ,cžc mÉu Ă« Ÿ©y Ăœ nĂŁi ¼Õn HTML. Kh«ng dĂŻng cžc mÉu ,mĂ©t web site phĂžc tÂčp sÏ cĂŁ cÊu trĂłc rÊt nÆng. §Ó gi¶i quyÕt vÊn ¼Ò trÂȘn ,nhiÒu kÜ thuËt mÉu Ÿ· tĂ„n tÂči, nhĂłng cĂŁ thÓ hĂ·u Ých trong mĂ©t sĂš tr−ĂȘng hĂźp. ChĂłng ta giĂ­i thiÖu qua mĂ©t sĂš kÜ thuËt ¼−üc sö dĂŽng th−ĂȘng xuyÂȘn . Name Code/ HTML mixed HTML structure Defined in PHP Advantages Disadvantages Useful for Embedded PHP Yes Yes Fastand easy Leadsto unreadable scrips, noreuse of existing code,hardto maintain Quick and Smallscripts Separating common parts Yes No Fast and easy, Reuseof certain pasts Leadsto unreadable scripts, often hard to maintain Web sites with LOC < 1000 FastTemplate No No Abstracts HTML completely from coding, easy to adapt to new needs Complex Web sites with LOC > 1000
  • 54. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 54 ViÖc sö dĂŽng cžc mÉu trong cžc tr×nh Ăžng dĂŽng 1. Embedded PHP ChĂłng ta cĂŁ thÓ nhĂłng cžc c©u lÖnh PHP v”o trong HTML. MĂ©t vÝ dĂŽ ÂźiÓn h×nh cña cžch thĂžc trÂȘn : <HTML> <HEAD> <TITLE>powers</TITLE> </HEAD> <BODY BGCOLOR=”black” TEXT=”white”> <H1>powers</H1> <TABLE> <TR> <TH>i</TH> <TH>i^i</TH> </TR> <?php for ($i= 0 ; $i< 10 ; $i++) { echo “<TR><TD>$i</TD><TD>”.pow($i,$i).”</TD></TR>n”; } ?> </TABLE> </BODY> </ HTML > Ph−¬ng phžp n”y ¼−üc dĂŻng khž phĂŠ biÕn vĂ­i nhĂ·ng ng−ĂȘi bŸt ¼Çu hĂ€c lËp tr×nh PHP. TĂ­i mĂ©t lĂłc n”o Ÿã ,nhĂ·ng ng−ĂȘi mĂ­i lËp tr×nh b»ng ph−¬ng phžp nhĂłng tiÕn tĂ­i sĂč th”nh thÂčo Ă« cžc mĂžc cao hÂŹn, nh−ng thËt Ÿžng tiÕc, cžch lËp tr×nh n”y lÂči ngšn c¶n ÂźiÒu Ÿã . 2. Separating common parts
  • 55. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 55 MÆc dĂŻ kÜ thuËt n”y cĂŁ sö dĂŽng lÂči cžc m· code/HTML v” viÖc thay ŸÊi cĂČng dÔ d”ng hÂŹn ,nh−ng nĂŁ vÉn thĂ”a hâˆ’Ă«ng hÇu hÕt cžc nh−üc ÂźiÓm cña ph−¬ng phžp PHP nhĂłng . Cžch l”m th«ng th−ĂȘng l” bŸt ¼Çu vĂ­i cžc HTML header v” footer, chĂłng ¼−üc viÕt th”nh cžc h”m. Cžc h”m n”y cĂŁ thÓ ¼−üc gĂ€i khi cÇn ¼Õn chĂłng v” do Ÿã linh hoÂčt hÂŹn khi sö dĂŽng. SĂč thay ŸÊi cžc h”m sÏ ¼−üc ph¶n žnh trong tÊt c¶ cžc tr−ĂȘng hĂźp. Ta tžch vÝ dĂŽ PHP nhĂłng Ă« trÂȘn ra hai file . TÖp prepend.inc chĂža hai h”m :hiÓn thÞ mĂ©t HTML header v” mĂ©t HTML footer . <?php //prepend.inc function CommonHeader($title) { ?> <HTML> <HEAD> <TITLE><?php echo $title ?></TITLE> </HEAD> <BODY BGCOLOR=”black” TEXT=”white”> <H1><?php echo $title ?></H1> <?php } function CommonFooter() { ?> </TABLE> </BODY> </HTML> <?php } ?> TÖp main.php sö dĂŽng tÖp prepend.inc
  • 56. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 56 <?php include “prepend.inc”; ?> <?php CommonHeader( “power” ); ?> <TABLE> <TR> <TH>i</TH> <TH>i^i</TH> </TR> <?php for ($i= 0 ; $i< 10 ; $i++) { echo “<TR><TD>$i</TD><TD>”.pow($i,$i).” </TD></TR>n”; } ?> </TABLE> <?php CommonFooter(); ?> 3. FastTemplate Trong phÇn n”y chĂłng ta cĂŻng t×m hiÓu vÒ ph−¬ng phžp thiÕt kÕ Web trong PHP l” FastTemplate. §©y l” ph−¬ng phžp hay, nĂŁ ¼−üc gŸn kÌm vĂ­i cžc gĂŁi Ăžng dĂŽng cña PHP, nĂŁ ¼−üc x©y dĂčng trong tÖp tin cĂŁ tÂȘn class. FastTemplate.php . MĂŽc ¼Ých cña ph−¬ng phžp n”y l” giĂłp cho ch−¬ng tr×nh viÕt b»ng PHP cĂŁ nhiÒu giao diÖn khžc nhau trÂȘn cĂŻng mĂ©t cÂŹ sĂ« m·, v” l”m gi¶m khĂši l−üng c«ng viÖc do ch−¬ng tr×nh ¼−üc tžch ra l”m hai phÇn : phÇn viÕt cžc ÂźoÂčn m· (code) v” phÇn thiÕt kÕ giao diÖn cho ch−¬ng tr×nh. PhÇn viÕt cžc ÂźoÂčn m· sÏ tÝnh tožn dĂ· liÖu v” thÓ hiÖn trÂȘn cžc trang HTML th«ng qua cžc biÕn FastTemplate. PhÇn giao diÖn sÏ thiÕt kÕ giao diÖn cho ch−¬ng tr×nh b»ng ng«n ngĂ· HTML. Trong phÇn n”y chĂłng ta cĂŁ thÓ lĂ„ng v”o trang HTML cžc ng«n ngĂ· nh− Java Applet, JavaScript, ... cho trang web thÂȘm sinh Ÿéng. ViÖc thÂȘm v”o trang HTML nhĂ·ng ÂźoÂčn m· n”y kh«ng l”m ¶nh hâˆ’Ă«ng tĂ­i phÇn ÂźoÂčn m· PHP. Khi Ÿã, Ă« vÞ trÝ n”o trÂȘn trang web cÇn thÓ hiÖn cžc kÕt qu¶ tÝnh tožn tĂ” ÂźoÂčn m· th× sÏ sö dĂŽng cžc biÕn FastTemplate ¼Ó thÓ hiÖn.
  • 57. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 57 II. Ph−¬ng phžp FastTemplate 1. BiÕn FastTemplate BiÕn FastTemplate l” g× ? Cžc biÕn FastTemplate cĂŁ cÊu trĂłc nh− sau : {TEN_BIEN_FASTTEMPLATE} BiÕn ¼−üc ¼Æt trong dÊu Ÿãng mĂ« ngoÆc nhĂ€n, tÂȘn biÕn Ă« giĂ·a, tÂȘn cĂŁ thÓ l” chĂ· hoa hoÆc chĂ· th−ĂȘng. Tuy nhiÂȘn trong phÇn ÂźoÂčn m· PHP bÂčn cĂČng ph¶i viÕt giĂšng nh− vËy. 2. VÞ trÝ ¼Æt biÕn FastTemplate Cžc biÕn FastTemplatse cĂŁ thÓ ¼Æt bÊt kĂș Ÿ©u trong trang HTML. NĂŁ cĂŁ thÓ l” biÕn thÓ hiÖn th«ng tin trÂȘn cžc trang HTML khi ¼−üc browser hiÓn thÞ hoÆc cžc biÕn sÏ thÂȘm v”o cžc ÂźoÂčn m· HTML . VÝ dĂŽ : ta ¼Æt tÂȘn tÖp l” : vidu_template.tpl <HTML> <HEAD> <TITLE>{TITLE}</TITLE> </HEAD> <BODY> {CONTENT} </BODY> </HTML> Trong vÝ dĂŽ trÂȘn cĂŁ hai biÕn FastTemplate l” {TITLE} v” {CONTENT}. BiÕn {CONTENT} sÏ thÓ hiÖn th«ng tin trÂȘn trang web khi ¼−üc hiÓn thÞ, biÕn {TITLE} ¼−üc thÂȘm v”o nh− mĂ©t th”nh phÇn cña m· HTML . 3. MĂ©t vÝ dĂŽ minh hĂ€a Theo vÝ dĂŽ trÂȘn chĂłng ta Ÿ· cĂŁ tÖp “vidu_template.tpl”, b©y giĂȘ chĂłng ta Âźi x©y dĂčng ÂźoÂčn script sau :
  • 58. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 58 <?php include “class.FastTemplate.php”; # khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate $tpl = new FastTemplate(“.”); # §Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate $tpl->set_filenames(array(“body” => “vidu_template.tpl ”)); # Gžn cžc giž trÞ cho biÕn FastTemplate $tpl->assign_vars(array( “TITLE” => “Vi du”, “CONTENT” => “NĂ©i dung cña trang web” )); # Cho hiÖn trang web n”y $tpl->pparse(“body”); ?> 4. BĂšn b−íc cho mĂ©t trang web . Trong mĂ©t script cÇn thĂčc hiÖn bĂšn bĂ­c theo thĂž tĂč sau : B−íc 1 : Khai bžo mĂ©t ŸÚi t−üng thuĂ©c lĂ­p FastTemplate B−íc 2 : Gžn cžc tÖp chĂža m· HTML (tÖp n”y cĂŁ phÇn mĂ« rĂ©ng kh«ng nhÊt thiÕt l” *.htm) cho cžc phÇn tö cña m¶ng ¼−üc ¼Þnh nghÜa bĂ«i ph−¬ng thĂžc set_filenames() ( b−íc n”y ¼−üc gĂ€i l” “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate” ) . B−íc 3 : Gžn giž trÞ cho cžc biÕn FastTemplate trong cžc tÖp . B−íc 4 : Cho hiÖn trang web b»ng ph−¬ng thĂžc pparse(“tÂȘn_trang_web”) ChĂł Ăœ : + B−íc 2: Trong “¼Þnh nghÜa mĂ©t b¶n ŸÄ cžc tÖp FastTemplate” cĂŁ thÓ nhiÒu tÖp ¼−üc gžn . + B−íc 4: Mçi lÇn gĂ€i ph−¬ng thĂžc pparse(); chØ ¼−üc mĂ©t tÖp FastTemplate.
  • 59. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 59 + Cžc b−íc 1,2,3,4 cĂŁ thÓ lÆp lÂči nhiÒu lÇn . + ThĂž tĂč gĂ€i ph−¬ng thĂžc pparse(); l” rÊt quan trĂ€ng v× nĂŁ ¶nh hâˆ’Ă«ng ¼Õn cžch thÓ hiÖn cña trang web. 5. KhĂši FastTemplate Th«ng tin trÂȘn trang web cĂŁ thÓ ¼−üc thÓ hiÖn d−íi dÂčng b¶ng, vĂ­i sĂš h”ng kh«ng xžc ¼Þnh do Ÿã FastTemplate cĂŁ hç trĂź “khĂši FastTemplate”. KhĂši FastTemplate sÏ lÆp Âźi lÆp lÂči mĂ©t ÂźoÂčn HTML n”o Ÿã khi ¼−üc Ÿžnh dÊu khĂši. XÐt vÝ dĂŽ sau : H·y thĂčc hiÖn phÐp tÝnh 2a vĂ­i a = 1, ..., n. KÕt qu¶ ¼−üc thÓ hiÖn bĂ«i mĂ©t b¶ng gĂ„m hai cĂ©t, cĂ©t giž trÞ cña a v” cĂ©t kÕt qu¶ cña phÐp tÝnh 2a . ChĂłng ta tÂčo tÖp “tinh_2_mu.htm” <html> <head> <title>Tinh 2 mu a</title> </head> <body> <table border="1" width="100%"> <tr> <td width="50%"> <p align="center">Gia tri a</td> <td width="50%"> <p align="center">Tinh 2ÂȘ</td> </tr> <!-- BEGIN block --> <tr> <td width="50%"> <p align="center">{block.GIATRI}</td> <td width="50%"> <p align="center">{block.KETQUA}</td>
  • 60. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 60 </tr> <!-- END block --> </table> </body> </html> Ta thÊy tÖp n”y tÂčo mĂ©t b¶ng hai h”ng hai cĂ©t, h”ng trÂȘn l” tiÂȘu ¼Ò cña cžc cĂ©t, h”ng d−íi cĂ©t thĂž nhÊt l” giž trÞ cña a v” cĂ©t thĂž hai l” kÕt qu¶ cña phÐp tÝnh 2a . H”ng d−íi ¼−üc bŸt ¼Çu bĂ«i khož <!-- BEGIN block --> v” kÕt thĂłc bĂ«i khož <!-- END block-->. Hai khož n”y cho biÕt phÇn bÂȘn trong sÏ bÞ lÆp (block Ă« Ÿ©y l” tÂȘn khož), cžc biÕn FastTemplate bÂȘn trong cĂŁ dÂčng {tenkhoa.TEN_BEN}. §oÂčn PHP Script sÏ nh− sau : <?php include "class.FastTemplate.php"; $tpl = new FastTemplate("."); $tpl->set_filenames(array( 'tinh_2_mu_a' => 'tinh_2_mu.htm' )); $n = 10; for ($i = 1 ; $i <= $n ; $i++) $tpl->assign_block_vars("block",array( 'GIATRI' => $i, 'KETQUA' => pow(2, $i) )); $tpl->pparse("tinh_2_mu_a"); ?> KÕt qu¶ khi chÂčy ch−¬ng tr×nh nh− h×nh vÏ.
  • 61. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 61 PhÇn II : HÖ C„ SĂ« DĂ· LIÖU MYSQL Ch−¬ng I. GiĂ­i thiÖu Ng«n ngĂ· MySQL I. GiĂ­i thiÖu chung MySQL rÊt phĂžc tÂčp, nh−ng giao diÖn SQL trĂčc gižc v” dÓ hĂ€c. Trong ch−¬ng n”y chĂłng ta m« t¶ khži qužt vÒ cžc lÖnh, cžc kiÓu dĂ· liÖu v” cžc h”m m” chĂłng ta cÇn biÕn ¼Ó sö dĂŽng Mysql mĂ©t cžch cĂŁ hiÖu qu¶ v” cĂŁ hiÖu suÊt cao. Ch−¬ng n”y cung cÊp tÊt c¶ cžc h”m tham kh¶o trong Mysql. §Ó sö dĂŽng ch−¬ng n”y cĂŁ hiÖu qu¶ bÂčn cĂŁ thÓ t×m ¼Õn h”ng loÂčt cžc b¶ng Ÿ· ¼−üc liÖt kÂȘ. Cžc −u ÂźiÓm cña MySQL: ‱ MySQL l” mĂ©t hÖ qu¶n trÞ nhĂĄ, b¶o mËt, v” rÊt dÔ sö dĂŽng, th−ĂȘng ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng nhĂĄ v” trung b×nh. NĂŁ ¼−üc sö dĂŽng cho cžc Ăžng dĂŽng client / server vĂ­i mžy chñ mÂčnh nh− UNIX, Windows NT v” Windows 95/98, v” ¼Æc biÖt trÂȘn mžy chñ UNIX . ‱ MySQL hç trĂź cžc ÂźiÓm v”o l” ANSI SQL92 v” ODBC mĂžc 0-2 SQL chuÈn. ‱ MySQL hç trĂź nhiÒu ng«n ngĂ· cho viÖc th«ng bžo lçi nh− : Czec, Dutc, English, Estonian, French, German, Hungarian, Italian, Norwegian Nynorsk, Polish, Portuguese, Spanish and Swedish. Ng«n ngĂ· ¼−üc hç trĂź mÆc ¼Þnh cho dĂ· liÖu l” ISO-8859-1 (Latin1), muĂšn thay ŸÊi ph¶i söa trong m· nguĂ„n . ‱ Ng«n ngĂ· lËp tr×nh sö dĂŽng viÕt cžc h”m API ¼Ó th©m nhËp cÂŹ sĂ« dĂ· liÖu MySQL cĂŁ thÓ l” C, Perl, PHP.. . ‱ Cžc b¶ng (table) trong cÂŹ sĂ« dĂ· liÖu MySQL cĂŁ kÝch th−íc rÊt lĂ­n v” ¼−üc l−u Ă« th− mĂŽc Datas. KÝch th−íc lĂ­n nhÊt cña mĂ©t b¶ng tĂši thiÓu l” 4GB v” nĂŁ cßn phĂŽ thuĂ©c v” kÝch th−íc lĂ­n nhÊt cña mĂ©t file do hÖ ÂźiÒu h”nh quy ¼Þnh .
  • 62. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 62 ‱ CÂŹ sĂ« dĂ· liÖu MySQL rÊt dÔ qu¶n lĂœ v” cĂŁ tĂšc Ÿé xö lĂœ cao hÂŹn tĂ­i ba bĂšn lÇn so vĂ­i cžc hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu khžc. ‱ MySQL l” mĂ©t hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu m« h×nh quan hÖ, nĂŁ cĂŁ m· nguĂ„n mĂ«. NĂŁ ¼−üc cung cÊp miÔn phÝ trÂȘn cžc mžy chñ UNIX, OS/2 v” c¶ trÂȘn Windows. BÂȘn cÂčnh cžc −u ÂźiÓm trÂȘn MySQL cĂČng cĂŁ mĂ©t v”i nh−üc ÂźiÓm : ‱ MySQl kh«ng cho phÐp thĂčc hiÖn cžc c©u lÖnh SQL select truy vÊn con. VÝ dĂŽ : SELECT deptno, ename, sal FROM emp x WHERE sal > (SELECT AVG(sal) FROM emp WHERE x.deptno = deptno) ORDER BY deptno ‱ MySQL kh«ng hç trĂź Stored Procedures, Triggers, Transactions, Foreign Keys, v” Views nh− cžc hÖ qu¶n trÞ cÂŹ sĂ« dĂ· liÖu khžc . II .CÊu trĂłc ng«n ngĂ· 1. §−a ra mĂ©t x©u v” mĂ©t sĂš nh− thÕ n”o MĂŽc n”y m« t¶ nhĂ·ng cžch khžc nhau ¼Ó ¼−a ra x©u v” sĂš trong Mysql. mĂŽc n”y cĂČng bao gĂ„m nhiÒu sŸc thži v” ``gotchas'' ÂźiÒu m” bÂčn cĂŁ thÓ gÆp khi Âźi s©u v”o cžc kiÓu cÂŹ b¶n trong Mysql. 2. X©u X©u l” mĂ©t d·y kÝ tĂč, ¼−üc ¼Æt trong dÊu nhžy Ÿn ‘ ’ hoÆc dÊu nhžy kÐp “ ” (nÕu chÂčy trong ph−¬ng thĂžc ANSI th× x©u chØ ¼−üc ¼Æt trong dÊu nhžy Ÿn) VÝ dĂŽ: ‘trĂȘi nŸng’. “ch”o buĂŠi sžng”. Trong mĂ©t x©u, cĂŁ sĂč kÕt hĂźp cña cžc kÝ tĂč tÂčo nÂȘn cžc kÝ tĂč ¼Æc biÖt. Mçi kÝ tĂč ¼Æc biÖt n”y bŸt ¼Çu b»ng dÊu chÐo ng−üc ( ) ¼−üc xem nh− kÝ tĂč escape . Mysql nhËn biÕt cžc kÝ tĂč ¼Æc biÖt sau: 0 : kÝ tĂč 0 trong m· ASCII. ’ : KÝ tĂč nhžy Ÿn ‘.
  • 63. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 63 ” : KÝ tĂč nhžy kÐp “. b : KÝ tĂč Backspace. n : KÝ tĂč xuĂšng dßng mĂ­i. r : KÝ tĂč vÒ ¼Çu dßng . t : NhÈy « (tab). z : KÝ tĂč 26 trong m· ASCII. KÝ tĂč n”y cĂŁ thÓ ¼−üc m· hož ¼Ó ŸÞng Ă« cuĂši file trong Windows. : KÝ tĂč chÐo ng−üc . % : KÝ tĂč % . _ : KÝ tĂč gÂčch d−íi _ . chĂł Ăœ : nÕu nh− sö dĂŽng kÝ tĂč ‘%’ hoÆc kÝ tĂč gÂčch d−íi ‘ _’ trong mĂ©t sĂš tr−ĂȘng hĂźp cĂŁ thÓ tr¶ vÒ % v” _ chĂž kh«ng ph¶i l” % v” _ . * cĂŁ mĂ©t sĂš cžch ¼Ó x©u gĂ„m c¶ dÊu nhžy : - ¼Ó mĂ©t dÊu nhžy Ÿn ( ‘ ) n»m trong mĂ©t x©u ¼−üc Ÿžnh dÊu bĂ«i dÊu nhžy Ÿn th× ph¶i viÕt l”: ‘ ‘ ’ ’ . - ¼Ó mĂ©t dÊu nhžy kÐp ( “ ) n»m trong mĂ©t x©u ¼−üc Ÿžnh dÊu bĂ«i dÊu nhžy Ÿn th× ph¶i viÕt l”: ‘ “ ” ’ . - cĂŁ thÓ ¼Æt kÝ tĂč (‘’) tr−íc kÝ tĂč Ÿžnh dÊu . - mĂ©t dÊu nhžy Ÿn trong cÆp dÊu nhžy kÐp ¼−a ra x©u chĂža dÊu nhžy Ÿn, mĂ©t dÊu nhžy kÐp trong cÆp dÊu nhžy Ÿn ¼−a ra x©u chĂža dÊu nhžy kÐp. - VÝ dĂŽ : mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo',''hello'; ------------------------------------------ | hello | "hello" | ""hello"" | hel'lo | 'hello | ------------------------------------------- mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", ""hello"; ------------------------------------------- | hello | 'hello' | ''hello'' | hel"lo | "hello | ------------------------------------------- mysql> SELECT "ThisnIsnFournlines"; -------------------- | This Is Four lines | --------------------
  • 64. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 64 nÕu bÂčn muĂšn chÌn dĂ· liÖu nhÞ ph©n v”o trong cĂ©t BLOB. NhĂ·ng kÝ tĂč sau ph¶i ¼−üc thÓ hiÖn d−íi dÂčng nhĂ·ng kÝ tĂč ¼Æc biÖt : - NUL : ASCII 0. ph¶i ¼−üc thÓ hiÖn ‘ 0 ’ . - : ASCII 92. dÊu gÂčch ng−üc ph¶i ¼−üc thÓ hiÖn ‘ ’ . - ’ :ASCII 39. dÊu nhžy Ÿn ph¶i ÂźĂčÂŹc thÓ hiÖn ‘ ’ ’ . - ” : ASCII 34. dÊu nhžy kÐp ph¶i ¼−üc thÓ hiÖn ‘ ” ’. - nÕu biÕt m· C, cĂŁ thÓ sö dĂŽng h”m CAPI l” Mysql-escape-string() ¼Ó ESC kÝ tĂč b»ng c©u lÖnh INSERT. - NÂȘn sö dĂŽng h”m ESC ŸÚi vĂ­i nhĂ·ng x©u chĂža kÝ tĂč ¼Æc biÖt ¼−üc liÖt kÂȘ Ă« trÂȘn. 3. SĂš (Numbers) S« bao gĂ„m sĂš nguyÂȘn v” sĂš thĂčc . SĂš nguyÂȘn ¼−üc biÓu diÔn b»ng mĂ©t d·y sĂš. Cßn sĂš thĂčc sö dĂŽng dÊu chÊm ¼Ó ph©n cžch phÇn thËp ph©n . DÊu gÂčch d−íi ÂźĂčÂŹc ¼Æt tr−íc sĂš ¼Ó chØ sĂš ©m. VÝ dĂŽ: 1221 0 32 VÝ dĂŽ cho sĂš thĂčc: 94.42 32032.6809e10 48.00 chĂł Ăœ : sĂš nguyÂȘn ¼−üc sö dĂŽng trong ngĂ· c¶nh sĂš thĂčc ¼−üc chuyÓn th”nh sĂš thĂčc cĂŁ giž trÞ ngang b»ng vÝ dĂŽ : float 0 0.0 float 56 -> 56.0 NhĂ·ng giž trÞ hÖ Hexa (hÖ 16) Mysql hç trĂź cžc giž trÞ hÖ Hexa. Trong ngĂ· c¶nh sĂš th× chĂłng giĂšng nh− mĂ©t sĂš nguyÂȘn. Trong ngĂ· c¶nh x©u th× chĂłng giĂšng nh− mĂ©t x©u nhÞ ph©n m” mçi cÆp sĂš nguyÂȘn Hexa ¼−üc chuyÓn th”nh mĂ©t kÝ tĂč . VÝ dĂŽ: mysql> SELECT x'FF' -> 255 mysql> SELECT 0xa0; -> 10 mysql> select 0x5061756c; -> Paul
  • 65. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 65 Ă« vÝ dĂŽ trÂȘn khi viÕt mĂ©t sĂš d−íi dÂčng Hexa bÂčn ph¶i ÂźiÒn v”o v”o tr−íc sĂš Ÿã chuçi ‘x’ hoÆc ‘0x’. CĂł phžp x ‘x©u Hexa’ dĂča trÂȘn ANSISQL, v” cĂł phžp 0x dĂča trÂȘn ODBC. X©u hÖ Hexa th−ĂȘng sö dĂŽng ODBC ¼Ó ¼−a giž trÞ cho cĂ©t BLOB CĂŁ thÓ chuyÓn mĂ©t x©u hoÆc sĂš th”nh hÖ Hexa b»ng h”m HEX(). 4. Giž trÞ NULL Giž trÞ NULL cĂŁ nghÜa l” “kh«ng cĂŁ dĂ· liÖu”(“no data”) khžc vĂ­i giž trÞ 0 ŸÚi vĂ­i kiÓu sĂš v” x©u rçng ŸÚi vĂ­i kiÓu x©u . Trong khu«n dÂčng xuÊt hoÆc nhËp File dĂ· liÖu NULL cĂŁ thÓ ¼−üc thÓ hiÖn b»ng ‘N’ (nh− LOAD DATA INFILE, SELECT...INTO OUTFILE). 5. TÂȘn cña CÂŹ sĂ« dĂ· liÖu, b¶ng, chØ sĂš cĂ©t v” bÝ danh TÂȘn cña cÂŹ sĂ« dĂ· liÖu, b¶ng, chØ sĂš cĂ©t v” bÝ danh tÊt c¶ ¼Òu tu©n theo mĂ©t qui luËt chung trong Mysql. Nh−ng chĂł Ăœ r»ng qui luËt n”y Ÿ· ¼−üc thay ŸÊi bŸt ¼Çu vĂ­i Mysql Version 3.23.6 khi chĂłng ta d−a v”o lĂȘi chĂł thÝch cho viÖc nhËn biÕt cÂŹ sĂ« dĂ· liÖu, b¶ng v” tÂȘn cĂ©t vĂ­i dÊu ‘ ‘ ’ ’ .’ ” ’sÏ l”m viÖc nhËn ra lĂȘi chĂł thÝch nÕu bÂčn chÂčy trong chÕ Ÿé ANSI . §Þnh danh (Identifier) §é d”i Cžc kÝ tĂč cho phÐp Database (cÂŹ sĂ« dĂ·liÖu) 64 TÊt c¶ cžc kÝ tĂč cho phÐp trong th− mĂŽc ngoÂči trĂ” ‘/’ v” ‘.’ Table (B¶ng) 64 TÊt c¶ cžc kÝ tĂč cho phÐp vĂ­i tÂȘn File ngoÂči trĂ” ‘/’ v” ‘.’ Column (CĂ©t) 64 Cho phÐp tÊt c¶ cžc kÝ tĂč Alias (BÝdanh) 256 Cho phÐp tÊt c¶ cžc kÝ tĂč ChĂł Ăœ: Ă« b¶ng trÂȘn ¼Þnh danh kh«ng thÓ cĂŁ kÝ tĂč Ÿžnh dÊu, ASCII(0) hoÆc ASCII(255) . NÕu ¼Þnh danh l” mĂ©t tĂ” bÞ hÂčn chÕ hoÆc trong Ÿã cĂŁ chĂža cžc kÝ tĂč ¼Æc biÖt th× bÂčn ph¶i sö dĂŽng dÊu nhžy Ÿn ¼Ó chĂł thÝch khi sö dĂŽng chĂłng . VÝ dĂŽ: SELECT * from `select` where `select`.id > 100; Trong phiÂȘn b¶n tr−íc cña Mysql, luËt ¼Æt tÂȘn nh− sau :
  • 66. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 66 - MĂ©t tÂȘn gĂ„m cžc kÝ tĂč trong b¶ng m·, cĂČng cho phÐp kÝ tĂč gÂčch d−íi ‘_’ v” ‘$’. - TÂȘn cĂŁ thÓ bŸt ¼Çu bĂ«i tÊt c¶ cžc kÝ tĂč hĂźp phžp, trong thĂčc tÕ tÂȘn cĂŁ thÓ bŸt ¼Çu b»ng mĂ©t sĂš (ÂźiÒu n”y khžc nhiÒu vĂ­i hÖ cÂŹ sĂ« dĂ· liÖu )tuy nhiÂȘn tÂȘn kh«ng chØ gĂ„m mĂ©t sĂš . - Kh«ng ¼−üc sö dĂŽng kÝ tĂč ‘.’ Trong tÂȘn bĂ«i v× kÝ tĂč Ÿã ¼−üc sö dĂŽng ¼Ó mĂ« rĂ©ng khu«n dÂčng ¼Ó truy nhËp ¼Õn cĂ©t (xem Ă« b¶ng d−íi Ÿ©y). ChĂłng ta kh«ng nÂȘn dĂŻng nhĂ·ng tÂȘn nh− 1e bĂ«i v× mĂ©t biÓu thĂžc nh− 1e1th× rÊt mÂŹ hĂ„, nĂŁ cĂŁ thÓ ¼−üc biÂȘn dÞch l” mĂ©t biÓu thĂžc 1e1 hoÆc l” sĂš 1e1. Trong Mysql ta cĂŁ thÓ liÂȘn hÖ tĂ­i mĂ©t cĂ©t b»ng viÖc sö dĂŽng nhĂ·ng cžch sau: CĂ©t tham chiÕu Ăœ nghÜa Col_name CĂ©t col_name tĂ” b¶ng sö dĂŽng trong c©u truy vÊn chĂža cĂ©t vĂ­i tÂȘn n”y. Tbl_name.col_name CĂ©t col_name tĂ” b¶ng tbl_name cña cÂŹ sĂ« dĂ· liÖu hiÖn thĂȘi . Db_name.tbl_name. col_name CĂ©t col_name tĂ” b¶ng tbl_name cña cÂŹ sĂ« dĂ· liÖu Db_name. ‘column_name’ MĂ©t cĂ©t cĂŁ chĂža kÝ tĂč ¼Æc biÖt hoÆc tĂ” khož BÂčn cÇn ph¶i chØ rĂą tbl_name hoÆc db_name.tbl_name ŸÚi vĂ­i nhĂ·ng cĂ©t cĂŁ cĂŻng tÂȘn trong nhiÒu b¶ng cña cÂŹ sĂ« dĂ· liÖu, hoÆc b¶ng cĂŁ cĂŻng tÂȘn trong cžc cÂŹ sĂ« dĂ· liÖu khžc nhau ¼Ó tržnh sĂč nhËp nh»ng . VÝ dĂŽ : gi¶ sö mçi b¶ng T1 ,T2 chĂž mĂ©t cĂ©t C bÂčn cĂŁ thÓ lÊy C trong mĂ©t lÖnh SELECT sö dĂŽng c¶ T1 v” T2. Trong tr−ĂȘng hĂźp n”y C nhËp nh»ng bĂ«i v× nĂŁ kh«ng duy nhÊt giĂ·a cžc b¶ng ¼−üc sö dĂŽng trong c©u lÖnh. BÂčn ph¶i chØ ra tÂȘn b¶ng b»ng cžch viÕt T1.C hoÆc T2.C. t−¬ng tĂč nÕu bÂčn lÊy tĂ” mĂ©t b¶ng T trong cÂŹ sĂ« dĂ· liÖu DB1 v” tĂ” b¶ng T trong cÂŹ sĂ« dĂ· liÖu DB2, bÂčn ph¶i tham chiÕu ¼Õn cĂ©t trong nhĂ·ng b¶ng Ÿã nh− sau : DB1.T.col_name v” DB2.T.col_name. CĂł phžp .Tbl_name cĂŁ nghÜa l” b¶ng Tbl_name n»m trong cÂŹ sĂ« dĂ· liÖu hiÖn thĂȘi .cĂł phžp n”y ¼−üc chÊp nhËn cho t−¬ng thÝch ODBC bĂ«i v× mĂ©t sĂš ch−¬ng tr×nh ODBC thÂȘm v”o ¼Çu tÂȘn b¶ng mĂ©t dÊu chÊm ‘.’ 6. Ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng ŸÚi vĂ­i tÂȘn trong Mysql :
  • 67. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 67 Trong Mysql tÂȘn cÂŹ sĂ« dĂ· liÖu, b¶ng trong Windows th× kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng, cßn trong Unix th× cĂŁ ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng . ChĂł Ăœ : mÆc dĂŻ trong windows kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng, bÂčn cĂČng kh«ng nÂȘn dĂŻng tÂȘn cÂŹ sĂ« dĂ· liÖu, b¶ng vĂ­i cžc tr−ĂȘng hĂźp khžc nhau trong cĂŻng mĂ©t c©u truy vÊn . VÝ dĂŽ : mysql> SELECT * FROM my_table WHERE MY_TABLE.col=1; c©u lÖnh trÂȘn sÏ kh«ng thĂčc hiÖn ¼−üc . TÂȘn cĂ©t kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng trong tÊt c¶ cžc tr−ĂȘng hĂźp . BÝ danh trÂȘn b¶ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng VÝ dĂŽ: mysql> SELECT col_name FROM tbl_name AS a WHERE a.col_name = 1 OR A.col_name = 2; C©u lÖnh trÂȘn sÏ kh«ng thĂčc hiÖn ¼−üc v× bÝ danh ph©n biÖt ‘a’ v” ‘A’ BÝ danh trÂȘn cĂ©t sÏ kh«ng ph©n biÖt chĂ· hoa v” chĂ· th−ĂȘng. NÕu bÂčn muĂšn truy vÊn thĂčc hiÖn ¼−üc trÂȘn b¶ng th× chÊp nhËn mĂ©t qui −íc lu«n lu«n tÂčo ra tÂȘn cÂŹ sĂ« dĂ· liÖu v” tÂȘn b¶ng sö dĂŽng chĂ· th−ĂȘng. MĂ©t cžch tržnh vÊn ¼Ò n”y l” sÏ bŸt ¼Çu mysql vĂ­i -0 lower_case_table_names = 1, Theo mÆc ¼Þnh tĂŻy chĂ€n n”y l” 1 trÂȘn Windows v” 0 trÂȘn Unix. NÕu lower_case_table_names l” 1 MySQL sÏ chuyÓn ŸÊi tÊt c¶ cžc tÂȘn b¶ng vÒ chĂ· th−ĂȘng ,ChĂł Ăœ r»ng nÕu bÂčn thay ŸÊi tĂŻy chĂ€n n”y, bÂčn cÇn tr−íc hÕt chuyÓn ŸÊi nhĂ·ng tÂȘn b¶ng cĂČ cña bÂčn vÒ chĂ· th−ĂȘng tr−íc khi bŸt ¼Çu mysql. 7. BiÕn ng−ĂȘi sö dĂŽng Mysql hĂŠ trĂź cžc biÕn riÂȘng cĂŻng vĂ­i cĂł phžp @variable name. TÂȘn biÕn bao gĂ„m kÝ tĂč anpha t− tËp cžc kÝ tĂč v” thÂȘm vao kÝ tĂč ‘_’, ’$’, v” ‘.’ BiÕn kh«ng ph¶i khĂ«i tÂčo, NULL kh«ng xuÊt hiÖn trong biÕn, biÕn cĂŁ thÓ chĂža sĂš nguyÂȘn thĂčc hoÆc giž trÞ x©u. TÊt c¶ cžc biÕn sÏ tĂč gi¶i phĂŁng vĂŻng nhĂ­ khi chĂłng thožt ra. BÂčn cĂŁ thÓ gžn biÓu thĂžc v”o biÕn theo cĂł phžp : @variable:=expr VÝ dĂŽ: select @t1:=(@t2:=1)@t3:=4,@t1,@t2,@t3; ------------------------------------------------ | @t1:=(@t2:=1)@t3:=4 | @t1 | @t2 | @t3 | ----------------------------------------------- | 5 | 5 | 1 | 4 | ------------------------------------------------ chĂłng ta ph¶i sö dĂŽng cĂł phžp:= ¼Ó gžn biÕn, bĂ«i v× dÊu b»ng (= ) ¼−üc sö dĂŽng ¼Ó so sžnh .
  • 68. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 68 biÕn cĂŁ thÓ ¼−üc sö dĂŽng trong mĂ©t biÓu thĂžc l−u Ăœ r»ng ÂźiÒu n”y kh«ng ¼−üc sö dĂŽng trong ngĂ· c¶nh mĂ©t sĂš ¼−üc yÂȘu cÇu rĂą r”ng nh− trong mÖnh ¼Ò LIMIT cña lÖnh select hoÆc mÖnh ¼Ò IGNORE number LINES cña lÖnh LOAD DATA . chĂł Ăœ : trong lÖnh SELECT mçi biÓu thĂžc chØ nhËn mĂ©t giž trÞ khi nĂŁ ¼−üc göi cho ng−ĂȘi dĂŻng. §iÒu n”y cĂČng Ÿóng trong mÖnh ¼Ò HAVING, GROUP BY, ORDER BY. BÂčn kh«ng thÓ tham chiÕu tĂ­i mĂ©t biÓu thĂžc gĂ„m tËp hĂźp cžc biÕn trong SELECT. VÝ dĂŽ: SELECT (@aa:=id) AS a, (@aa3) AS b FROM table_name HAVING b=5; C©u lÖnh trÂȘn kh«ng thĂčc hiÖn ¼−ücbĂ«i v× @aa sÏ kh«ng chĂža giž trÞ Ă« h”ng hiÖn tÂči trĂ” phi gÝ trÞ cña id thay cho cĂ©t Ÿ· ¼−üc chÊp nhÂčn tr−íc . 8. Cžc dßng chĂł thÝch Mysql cho phÐp chÌn cžc c©u chĂł thÝch v”o trong kÞch b¶n cña Mysql, khi thĂčc hiÖn tr×nh th«ng dÞch sÏ bĂĄ qua tÊt c¶ cžc ÂźoÂčn všn b¶n l” c©u chĂł thÝch Trong Mysql chĂł thÝch ¼−üc ¼Æt sau dÊu : # dßng chĂł thÝch -- dßng chĂł thÝch cžch viÕt n”y chØ cĂŁ tžc dĂŽng trÂȘn mĂ©t dßng . dĂŻng cÆp kÝ hiÖu sau : /* ....*/ ¼Ó chÌn cžc c©u chĂł thÝch, loÂči chĂł thÝch n”y ¼−üc gĂ€i l” chĂł thÝch khĂši . vÝ dĂŽ: mysql> select 11; # chĂł thÝch trÂȘn mĂ©t dßng mysql> select 11; -- chĂł thÝch trÂȘn mĂ©t dßng mysql> select 1 /* chĂł thÝch khĂši*/ 1; mysql> select 1 /* chĂł thÝch trÂȘn nhiÒu dßng chĂł thÝch khĂši */ 1; l−u Ăœ r»ng chĂł thÝch – yÂȘu cÇu bÂčn ph¶i cĂŁ Ýt nhÊt mĂ©t dÊu cžch sau --! MÆc dĂŻ vËy cĂŁ v”i hÂčn chÕ trong cžch ghi chĂł *..* Ÿã l”: - kÝ tĂč nhžy Ÿn v” nhžy Ÿ«i dĂŻng ¼Ó chØ sĂč bŸt ¼Çu cña mĂ©t x©u thËm chÝ sö dĂŽng bÂȘn trong mĂ©t chĂł thÝch nÕu trong chĂł thÝch dÊu nhžy thĂž nhÊt kh«ng phĂŻ hĂźp vĂ­i dÊu nhžy thĂž hai th× hÖ ph©n tÝch sÏ kh«ng nhËn ra ÂźiÓm kÕt thĂłc cña ghi chĂł. - dÊu chÊm phÈy ( ; ) ¼−üc dĂŻng ¼Ó bžo kÕt thĂłc cña mĂ©t c©u lÖnh Mysql v” sau dÊu ( ; ) l” sĂč bŸt ¼Çu cña c©u lÖnh tiÕp theo.
  • 69. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 69 Ch−¬ng II. Cžc th”nh phÇn cña My SQL Trong phÇn n”y chĂłng ta giĂ­i thiÖu khži qužt vÒ cžc kiÓu dĂ· liÖu cña cžc tr−ĂȘng va cžc thuĂ©c tÝnh vÒ kiÓu trong mçi loÂči dĂ· liÖu.Sau Ÿã l” mĂ©t sĂš kiÓu b¶ng trong MySQL v” cuĂši cĂŻng l” mĂ©t sĂš h”m cÂŹ b¶n ¼−üc cung cÊp bĂ«i MySQL. I. Cžc kiÓu dĂ· liÖu Trong MySQL cĂŁ cžc kiÓu dĂ· liÖu sau: KiÓu sĂš KiÓu kÝ tĂč (char,varchar,Blob,Text,Enum,Set) KiÓu x©u. KiÓu ng”y giĂȘ (Datetime,Date,TimeStamp,Time,year) 1. KiÓu sĂš KiÓu tinyint: Khai bžo TINYINT[Cm] [UNSGNED] [ZEROFIU].§©y l” kiÓu sĂš nguyÂȘn vĂ­i giž trÞ rÊt nhĂĄ: -NÕu khai bžo vĂ­i tĂ” khož nusigned th× giž trÞ m” cĂ©t cĂŁ kiÓu n”y cĂŁ thÓ n»m trong kho¶ng 0 ¼Õn 255. -NÕu kh«ng cĂŁ tĂ” khĂŁa nusiged th× giž trÞ trong kho¶ng –128 ¼Õn 127 KiÓu Smallint Khai bžo:Smallint [Cm] [nusiged] [zerofill].§©y l” kiÓu sĂš nguyÂȘn cĂŁ giž trÞ nhĂĄ: -NÕu l” sĂš cĂŁ dÊu th× giž trÞ n»m trong kho¶ng-32768 ¼Õn 32767 -NÕu l” sĂš kh«ng dÊu th× giž trÞ trong kho¶ng 0 ¼Õn 65536. KiÓu Mediumint Khai bžo :Mediumint [cm] [nusiged] [zerofill] [(m)] -NÕucĂŁ dÊu th× giž trÞ n»m trong kho¶ng –8388608 ¼Õn 8388607. -NÕu l” sĂš cĂŁ dÊu th× giž trÞ n»m trong kho¶ng 0 ¼Õn 16777215. KiÓu Int: Khai bžo:Int:[Cm] [nusiged] [zerofill] -VĂ­i sĂš cĂŁ dÊu giž trÞ trong kho¶ng –2147483648 ¼Õn 2147483647 -VĂ­i sĂš kh«ng dÊu giž trÞ trong kho¶ng 0 ¼Õn 429467295 KiÓu Interger Khai bžo:interger [Cm] [nusiged] [zerofill].T−¬ng tĂč kiÓu INT.
  • 70. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 70 KiÓu Bigint Khai bžo :Bigint [Cm] [nusiged] [zerofill].§©y l” kiÓu nguyÂȘn m” giž trÞ l” rÊt lĂ­n. -VĂ­i sĂš cĂŁ dÊu giž trÞ trong kho¶ng –9223372036854775808 ¼Õn 9223372036854775807. -VĂ­i sĂš kh«ng dÊu giž trÞ trong kho¶ng 0 ¼Õn 18446744073709551615 Note:tÊt c¶ cžc phÐp tožn sĂš hĂ€c sö dĂŽng sĂš cĂŁ dÊu bigint hoÆc double, v× vËy kh«ng sö dĂŽng sĂš kh«ng dÊu ,m” giž trÞ v−üt quž sĂš nguyÂȘn lĂ­n tĂžc l” nÕu nh©n hai sĂš nguyÂȘn lĂ­n th× giž trÞ tr¶ vÒ sÏ v−üt quž sĂš nguyÂȘn lĂ­n cĂŁ dÊu. KiÓu float: Khai bžo:float (precision)[zerofill].§Úi vĂ­i sĂš thĂčc Ÿé chÝnh xžc Ÿn th× Ÿé chÝnh xžc <24.§Úi vĂ­i sĂš thĂčc Ÿé chÝnh xžc kÐp th× Ÿé chÝnh xžc <255.Float(x) giĂšng kiÓu double,float nh−ng cĂŹ v” sĂš chĂ· sĂš phÇn thËp ph©n ch−a ¼−üc ¼Þnh nghÜa Precision:sĂš chĂ· sĂš phÇn thËp ph©n m” float cĂŁ thÓ nhËn.Float [Cm,d] [zerofill]:Ÿ©y l” sĂš thĂčc vĂ­i Ÿé chÝnh xžc kÐp vĂ­i m hiÓn thÞ Ÿé rĂ©ng,d l” sĂš cžc chĂ· sĂš phÇn thËp ph©n. NÕu dĂŻng float kh«ng cĂŁ ŸÚi hoÆc ŸÚi <=24,th× t−¬ng Ăžng dĂŻng sĂš thĂčc cĂŁ Ÿé chÝnh xžc Ÿn. Double [(Cm,d)] [zerofill]:sĂš thĂčc vĂ­i Ÿé chÝnh xžc kÐp vĂ­i m l” Ÿé rĂ©ng, d l” sĂš chĂ· sĂš phÇn thËp ph©n.NĂ”u dĂŻng double kh«ng ŸÚi hoÆcdĂŻng float(x) vĂ­i 25<=x<=53 thay cho mĂ©t sĂš thĂčc Ÿé chÝnh xžc kÐp. Double precision [(Cm,d)][zerofill] Real [(Cm,d)][zerofill] .t−¬ng tĂč nh− sĂš double. Decimal [(Cm,d)][zerofill] ¼−üc coi nh− mĂ©t kiÓu char,¼−üc l−u trĂ· nh− mĂ©t x©u mçi kÝ tĂč l” mĂ©t kÝ sĂš cña giž trÞ cÇn l−u trĂ·. Nuneric [(Cm,d)][zerofill] t−¬ng tĂč decimal. 2.KiÓu ng”y giĂȘ 2.1 Datime, Date, TimeStamp. Cžc kiÓu Datime, Data, TimeStamp cĂŁ nhĂ·ng ¼Æc tr−ng riÂȘng nh−ng cĂČng cĂŁ mĂši liÂȘn quan. CĂŁ mĂ©t sĂš Y2K chĂłng ta Ÿ· tĂ”ng biÕn ŸÊi vĂ­i cžc kiÓu thĂȘi gian kh«ng gian rĂą r”ng trÂȘn MySQL Ÿ· gi¶i thÝch cžc ng”y cĂŻng vĂ­i giž trÞ nšm mËp mĂȘ theo quy luËt sau: -Giž trÞ nšm trong kho¶ng 70-69 ¼−üc chuyÓn sang nšm 2000-
  • 71. Ban chØ ÂźÂčo cntt cña cÂŹ quan ٦ng PHP & MySQL 71 2069 -Giž trÞ nšm trong kho¶ng 70-99 ¼−üc chuyÓn sang nšm 1970- 1999. §ã l” v× giž trÞ nšm ta chØ ¼Ó hai chĂ· sĂš, cßn hai sĂš tr−íc mÆc ¼Þnh l” nšm 1900.§Ó l”m cho kh«ng nhÇm lÉn nšm th× ph¶I cung cÊp giž trÞ nšm l” bĂšn sĂš.MySQL Ÿ· l”m ÂźiÒu n”y. KiÓu datetime: §©y l” kiÓu ng”y giĂȘ ¼−üc dĂŻng khi bÂčn cÇn l−u trĂ· th«ng tin c¶ vÒ ng”y thžng v” thĂȘi gian.Giž trÞ cña nĂŁ n»m trong kho¶ng 1000-01-10:00:00 ¼Õn ‘9999-12-3123:59:59’ MySQL hiÓn thÞ datatime theo ¼Þnh dÂčng: “yyyy-mm-dd hh:mm:ss” nh−ng nĂŁ cĂČng cho phÐp Ên ¼Þnh giž trÞ cho kiÓu n”y b»ng dÂčng sĂš hoÆc x©u. KiÓu Date ¼−üc dĂŻng khi bÂčn chØ cÇn l−u trĂ· giž trÞ ng”y thžng. MySQL truy xuÊt v” hiÓn thÞ giž trÞ DATE vĂ­i ¼Þnh dÂčng “yyyy- mm-dd” Giž trÞ trong kho¶ng ‘1000-01-01’ ¼Õn ‘9999-12-31’cĂŁ thÓ Ên Âźinh b»ng sĂš hoÆc x©u. KiÓu TIMESTAMP [Cm] Cung cÊp 1 kiÓu m” bÂčn cĂŁ thÓ dĂŻng ¼Ó Ÿžnh dÊu mĂ©t cžch tĂč Ÿéng ŸÚi vĂ­i phÐp INSERT hoÆc UPDATE cĂŻng vĂ­i ng”y giĂȘ hiÖn tÂči.NÕu cĂŁ nhiÒu cĂ©t TIMESTAMP th× chØ cĂ©t ¼Çu tiÂȘn ¼−üc cËp nhËt mĂ©t cžch tĂč Ÿéng. §Ó cËp nhËt v”o cĂ©t ¼Çu nh− vËy cĂČng ph¶i tho¶ m·n cžc ÂźiÒu kiÖn sau: -CĂ©t m” chĂža ¼−üc xžc ¼Þnh chi tiÕt trong mÖnh ¼Ò INSERT hoÆcLOADDATAINFILE -CĂ©t m” kh«ng xžc ¼Þnh chi tiÕt trong lÖnh UPDATE v” mĂ©t sĂš cĂ©t khžc Ÿ· thay ŸÊi giž trÞ -BÂčn ¼Æt chi tiÕt cĂ©t TIMESTAMP l” ng”y giĂȘ hiÖn tÂči b»ng cžch Ên ¼Þnh giž trÞ NULL Cžc cĂ©t khžc cĂŁ thÓ ¼−üc ¼Æt thĂȘi gian v” ng”y thžng hiÖn tÂči.ChØ c” vĂ­i cĂ©t giž trÞ NULL hoÆc NOW.Giž trÞ cña TIMESTAMP l” tĂ” 1970- 01-01:00:00:00.§Õn nšm 2037 th× MySQL hiÓn thÞ TIMESTAMP theo ¼Þnh dÂčng ‘yyyy mm dd hh mm ss’ ‘yyyy mm dd hh mm ss’.MySQL cĂČng cho phÐp sö dĂŽng b»ng x©u hoÆc sĂš. KiÓu TIME MySQL ¼Þnh dÂčng giž trÞ thĂȘi gian l” ‘hh:mm:ss’ hoÆc HHH:MM:SS NguyÂȘn nh©n m” phÇn giĂȘ cĂŁ thÓ lĂ­n hÂŹn tÂči v× kiÓu TIME kh«ng chØ biÓu diÔn thĂȘi gian trong 1ng”y (giĂȘ ph¶i <24) m” nĂŁ cßn l” kho¶ng thĂȘi gian giĂ·a hai sĂč kiÖn (cĂŁ thÓ >24 hoÆc thËm chÝ l” ©m).Giž trÞ cña