You are on page 1of 47

LAP TRNH WEB NG VI

PHP / MySQL
GUESTBOOK CATALOG FORUM SHOPPING CART

PHAN 2
Tong Phc Khai (tong hp& bien dch)

Phng phap truy xuat CSDL

MySQL

1- T Command Prompt 2- Bang lenh PHP 3- Dung phpMyadmin

e hieu c chng nay mot cach ro rang, trc tien ban can phai co mot so kien thc c ban ve C S D Lieu quan he. Neu ban a hoc qua mot khoa can ban ve MS Access trong chng trnh ao tao chng ch B chang han th han nhien ban co the tiep tuc. Con neu nh ban cha biet g ve no th toi se ban en no trong phan Phu Luc cua giao trnh nay hoac ban co the tm ngay mot tai lieu tham khao ve CSDL, de nhat la tai lieu va MS Access ... ... Toi chac rang bay gi ban a co kien thc ve CSDL va hieu biet Table la g roi! Co hang khoi cong viec ban se phai lam viec oi vi cac Table va ban se c hng dan can ke trong quyen sach nay. Ban se phai vt qua mot so kien thc ve no e mi co the thanh thao trong thao tac vi Table. Nh ban biet ay: Con ng i en thanh cong khong co trai tham san au! Neu ban a tng lam viec vi MS SQL Server hay Access chung eu co ho tr viec tao CSDL rat la de dang vi giao dien trc quan. oi vi MySQL ban cung co the s dung cong cu trc quan o la phpMyadmin. Tuy nhien, ban phai hoc cach thao tac vi CSDL bang dong lenh, toi chac rang ieu nay se rat co ch cho ban. Muon chng trnh cua ban trong luc chay thao tac t ong vi CSDL th ban can hang ta lenh PHP/SQL e thc hien cac yeu cau cua chng trnh.

Trc khi chung ta tao cac table trong CSDL cua MySQL, co mot vai th ban can phai hieu ro. Nhng khai niem c ban ma toi sap gii thieu sau ay rat quan trong. Ban hay chac rang mnh a nam ky ve chung trc khi thc hien viec thiet ke d lieu.

Null

Viec au tien ban phai lam trong viec thiet ke mot table la quyet nh xem mot field co cho phep gia tr NULL hay khong. Trong CSDL quan he, gia tr NULL cua mot field ong ngha vi no co the chap nhan khong co d lieu trong o. Nen nh rang gia tr NULL khac vi gia tr cua mot chuoi khong co ky t trong o hoac so co gia tr 0. oi khi trong chng trnh, ban se thc hien mot so ong tac so sanh xem mot chuoi nao o co cha gia tr hay khong, no co the la mot cau lenh IF. Xet mot v du PHP nh sau:
$var //this is a variable used in the test if ($var == ) { echo Var is an empty string; } else { echo $var; }

Neu ban thc hien viec so sanh xem gia tr so co phai 0 hay khong th cung thc hien tng t. ong tac so sanh tren se khong lam viec c oi vi gia tr NULL. Ban nen hieu rang NULL la khong cha bat ky gia tr g trong o, cho nen viec so sanh tr khong mang y ngha g ca. Trong chng 3 ban se thay rang oi vi gia tr NULL oi hoi lap trnh vien phai rat can nhac khi viet lenh lien ket table.
Trong lenh SELECT cua SQL, co mot so cach e ban co the kiem tra neu nh mot field cha gia tr NULL. Trc het ban hay s dung ham Isnull(). Gia s tm mot record trong table ma gia tr midle_name la NULL, ban co the s dung query sau: select * from names where isnull(middle_name); Hoac lay cac record ma middle_name khac NULL:
select * from names where !isnull(middle_name); select * from users were addr2 is null; select * from users where addr2 is not null;

Ban cung co the s dung is null va is not null:

e ro hn, ban hay xem chuyen g xay ra khi toi co gang lien ket hai table sau:

Khach_hang ten Trung Khai

ho_lot Le Anh Tong Phuoc

ba_xa 1321 Null

Hon_nhan ba_xa 1321

ten Diem

ho_lot Nguyen Thuy

Neu ban muon tm ten cac khach hang va ten nhng ba xa cua ho, ban se phai lien ket 2 table nay thong qua field ba_xa. (Xin ban ch lo lang khi cha hieu ve cu phap, ban se hoc ngay phan tiep theo thoi).
SELECT * FROM khach_hang, hon_nhan WHERE khach_hang.ba_xa = hon_nhan.ba_xa

Viec thc hien nay ch ung oi vi Trung, nhng se co van e oi vi Khai bi v anh ta hay con oc than va ba_xa cua anh ta la NULL. Trong chng 3 ban se khao sat ky hn ve van e nay.

Index

Ngi ta noi rang u iem vt troi cua He quan tr CSDL quan he la no thc hien cac viec tm kiem hay sap xep nhng khoi lng d lieu khong lo mot cach rat nhanh chong. S d no thc hien c viec nay la do no co cha mot c cau lu tr d lieu goi la INDEX. INDEX cho phep database server tao c mot field ac trng tm kiem vi toc o kho ng. Cac INDEX ac biet ho tr mot hoac mot nhom cac record trong mot table cha so lng ln cac record. Chung cung ho tr toc o cho cac ham lien ket hoac tach nhom d lieu nh min(), max(), ban se tm hieu Chng 3. Vi cac tnh nang vt troi nay, tai sao ngi ta lai khong tao index trong tat ca cac field cua mot table? Co mot so ieu tr ngai nh sau: Th nhat, index co se lam cham mot so tien trnh trong CSDL. Moi lan bao tr cac index Database Server phai mat kha nhieu thi gian. Co mot vai trng hp chnh cac index lam cho chung cham han. Neu nh tren table cua ban tat ca cac record eu giong y nh nhau th khong co ly do g e ban tao index. Cac index d tha ch lam cho ton them khong gian a cua ban ma thoi.

oi vi mot table co gan khoa chnh (primary key) th thong thng field co khoa nay c dung vao viec tm kiem cho nen index se c gan t ong tren field nay. Ban se gap lai rat nhieu cong viec tao index cac phan tiep theo sau.

Lenh CREATE Database


mysql> create database database_name;

Trc khi tao c mot Table th ieu tat yeu la ban phai tao c mot Database cai a. Viec nay de dang va nhanh chong thoi. Lenh CREATE c s dung nh sau:

Neu nh ban thac mac rang sau khi tao database no se nam trong th muc nao tren o a cua ban th ban hay tm trong ..\mysql\data xem co khong.

Khi at ten cho database, hay at ten cho field va index g ay tranh trng tranh trng hp at nhng cai ten kho nh hoac de b lan lon. oi vi mot so he thong Unix chang han co s phan biet ch HOA/thng th CSDL chay tren no cung anh hng theo. Ban hay chon mot quy c cho rieng mnh trong viec at ten e khoi nham lan ve sau. Chang han ten cua table va field eu at ch thng chang han. Nen nh la khong c s dung khoang trang.

Bay gi ban tm hieu ca hai cach tao database: Cach th nhat tao thu cong t dau nhac dong lenh DOS, cach th hai s dung cac lenh trong PHP. Cach th nhat toi a co trnh bay chng gii thieu va ban a tao mot database ten la guestbook. Cu phap tao nh sau:
mysql> create database guestbook;

Cach th hai la s dung lenh trong PHP, ban co the dung ham mysql_create_db() hoac mysql_query(). Nhng nen nh trc khi tao ban phai thc hien c ket noi vi database server.
$conn = mysql_connect(localhost,username, password) or die (Could not connect to localhost); mysql_create_db(my_database) or die (Could not create database); $string = create database my_other_db; mysql_query($string) or die(mysql_error());

Lenh USE Database

Sau khi a tao c mot database mi trong database server ban se bat au chon no e s dung cho cong viec cua mnh. Cach thc hien nh sau: 1. Command Prompt:
mysql> use database_name;

2. Trong PHP:
$conn = mysql_connect(localhost,username, password) or die (Could not connect to localhost); mysql_select_db(test, $conn) or die (Could not select database);

Lenh CREATE Table

Lu y: Lenh nay thc hien sau khi a co lenh CREATE Database. Mot khi ban a tao va chon database, viec tiep theo la tao mot table. Ban se s dung lenh Create Table nh sau:
create table table_name
( column_1 column_type column_attributes, column_2 column_type column_attributes, primary key (column_name), index index_name(column_name) )

oi vi thuoc tnh cac field (cot) chung ta can ban ve: - null hoac not null - default

Neu ban khong nh ngha NULL hay NOT NULL th NULL se c chon lam gia tr mac nh. Hay xet v du sau:
create table topics2 ( topic_id integer not null auto_increment, parent_id integer default 0 not null, root_id integer default 0, name varchar(255), description text null, create_dt timestamp, modify_dt timestamp, author varchar(255) null, author_host varchar(255) null, primary key(topic_id), index my_index(parent_id))

Trong v du tren ban tao ra mot table co ten topics2, co tat ca 8 field va co 2 index, mot index cho khoa chnh va mot cho parent_id. Type cua cac field tren lan lt la integer, varchar, text, timestamp. Gia tr ng sau defaul la gia tr mac nh ban gan cho mot o trong record khi khong nhap lieu vao.

Bay gi chung ta ap dung cac lenh nay vao mot chng trnh PHP e tao table, ham mysql_query () c s dung:
$conn = mysql_connect(localhost,username, password) or die (Could not connect to localhost); mysql_select_db(test, $conn) or die(could not select database); $query = create table my_table (col_1 int not null primary key, col_2 text); mysql_query($query) or die(mysql_error());

* Lu y: username va password tuy thuoc vao MySQL cua ban.V du:


$conn = mysql_connect(localhost,minhtrung, zadfdfaked) or
Thong thng cac nha cung cap host PHP s dung localhost, tuy nhien mot so hosting khong s dung localhost nh Yahoo chang han. Do o ban can xem hng dan cua nha cung cap host.

Kieu d lieu

Bay gi chung ta hay ban ve cac kieu d lieu (type) gan cho field trong table. Co rat nhieu kieu khac nhau chung ta se lan lt khao sat tng kieu mot.

Kieu chuoi van ban


MySQL co 7 kieu danh cho d lieu kieu chuoi van ban: char varchar tinytext text mediumtext longtext enum

CHAR Cach s dung: char(length) Length co gia tr toi a la 255. Gia s ban s dung khai bao char(10) th ban ch c phep nhap vao toi a 10 ky t ma thoi. VARCHAR Cach s dung: varchar(length) Kieu nay cung gan giong nh kieu CHAR co o dai toi a cung la 255. iem khac biet cua varchar la no ch la bien lu tr o dai, cho nen no se khong thay oi khi gia tr cua cua o d lieu dai hay ngan. MySQL se sinh ra mot ky dung lam bien cha o dai cua field kieu varchar. ong thi MySQL se thc hien chc nang loai bo cac khoang trong trong moi o d lieu neu nh khong c s dung het. USING CHAR OR VARCHAR Co s khac nhau trong viec s dung CHAR va VARCHAR. Sau ay la phng hng la chon cua ban. Gia du ban tao mot field la A CH va ban d tnh o dai toi a la 150. Co nhng trng hp a ch rat ngan v du: 1 Le Li, Q.1, TPHCM. Ban ch s dung co 20 ky t, nh vay con

trong rat nhieu ky t khong dung en. Trong trng hp nay ban nen s dung kieu VARCHAR (150). Trng hp field cua ban la MA SO chang han, va ban cho o dai toi a la 6 theo quy c tao ma cua ban v du: KH0001 . Trong trng hp nay cac o khac eu c nhap theo chuan nh san luon luon la 6 ky t cho nen khong viec g ban phai s dung VARCHAR e MySQL phai nhoc cong theo doi o dai cua cac o moi khi nhap vao. Ban ch s dung VAR(6) la c.
Trong trng hp ban chon kieu d lieu la varchar(4) th MySQL se t ong oi lai la kieu char.

TINYTEXT Cach s dung: tinytext ay la mot trong bon kieu text nh phan. Tat ca 4 kieu nay (tinytext, text, mediumtext, largetext) eu la kieu bien tng t nh varchar. Chung kh khac nhau ve o dai cua cho phep cua ky t ma thoi. Tuy nhien, oi vi TINYTEXT th cho phep o dai toi a la 255, giong nh varchar(255). Cho phep tao index tren toan bo cac ky t cua field nay.

TEXT Cach s dung: text Cho phep o dai toi a la 65,535 ky t. Co the tao index tren 255 ky t au. MEDIUMTEXT Cach s dung: midiumtext Cho phep o dai toi a la 16,777,215 ky t. Co the tao index tren 255 ky t au. LONGTEXT Cach s dung: longtext Cho phep o dai toi a la 4,294,967,295 ky t. Co the tao index tren 255 ky t au. Tuy nhien loai nay khong thong dung bi v MySQL ch ho tr chuoi 16 trieu bytes. ENUM Cach s dung: enum (value1, value2, value3 ...) [default value] Vi enum ban co the gii han cac gia tr c nh san cho mot field. Cho phep ban nh trc toi a 65.535 gia tr. Thong thng ngi ta dung kieu nay cho field cha gia tr Yes hoac No. V du:

create table my_table ( id int auto_increment primary key, answer enum (yes, no) default no );

SET Cach s dung: set (value1, value2, value3 ...) [default value] Kieu nay nh ngha mot tap hp hang loat cac gia tr nh trc. Tuy nhien, cach nay t c dung bi v no pha v cau truc thiet ke CSDL (mot field co qua nhieu kieu) va cac ban se khong thay toi s dung trong quyen sach nay.

Kieu d lieu so

MySQL co tat ca 7 kieu so. Lu y rang cac kieu sau ay la giong nhau: int/ integer, double/double precision/real, decimal/numeric int/integer tinyint mediumint bigint

float double/double precision/real decimal/numeric oi vi tat ca kieu so, gia tr ln nhat cho phep la 255. oi vi mot so kieu cho phep ban the hien cac so 0 ng au. Gia s ban co mot field co o dai la 10 th so 25 trong o d lieu se c the hien 0000000025. Field so con c nh ngha la co dau (signed) hoac khong dau (unsigned). Mac ch la co.

INT/INTEGER Cach s dung: int(display size) [unsigned] [zerofill] Neu ban dung khong dau th gia tr cua field cho phep la t 0 en 4.294.967.295. Neu dung co dau th gia tr t 2.147.483.648 en 2.147.483.647. Kieu Int se s dung auto_increment (t ong theo chieu tang) e nh ngha khoa chnh cua table.
create table my_table ( table_id int unsigned auto_increment primary key, next_column text );

e y rang ban s dung khong dau (unsigned) bi v auto_increment khong dung cho cac gia tr am. TINYINT Cach s dung: tinyint(display size) [unsigned] [zerofill] Neu khong dau, tinyint se cha cac gia tr nguyen t 0 en 255. Neu co dau th t -128 en 127. MEDIUMINT Cach s dung: mediumint(display size) [unsigned] [zerofill] Co dau: co gia tr t -8.388.608 en 8.388.607 Khong dau: co gia tr t 0 en 1677215 BIGINT Cach s dung: bigint(display size) [unsigned] [zerofill] Co dau: -9.223.372.036.854.775.808 en 9.223.372.036.854.775.807 Khong dau: from 0 to 18.446.744.073.709.551.615

FLOAT Cach s dung 1: FLOAT(precision) [zerofill] Vi cach s dung nay, cho phep cha cac so thap phan khong dau. So lng phan thap phan co the la <=24 oi vi loai single va 25 en 53 oi vi loai double. Cac version trc ay cua MySQL, luon chia lam 2 loai: Cach s dung 2: FLOAT[(M,D)] [ZEROFILL] ay la loai single va gia tr co the la t -3,402823466E+38 en -1,175494351E-38, so 0, va t 1,175494351E-38 en 3,402823466E+38. M la phan nguyen, D la phan thap phan. ???? DOUBLE/DOUBLE PRECISION/REAL Cach s dung 1: DOUBLE[(M,D)] [zerofill] Cho phep gia tr t -1,7976931348623157E+308 en -2,2250738585072014E-308, so 0 va 2,2250738585072014E-308 en 1,7976931348623157E+308. M la phan nguyen, D la phan thap phan. Cach s dung 2: DECIMAL[(M[,D])] [ZEROFILL] Cac so trong phan thap phan c lu tr nh ky t. Moi so c xem nh mot ky t chuoi. Neu D = 0 th se khong co phan thap phan. Gia tr thap phan giong nh dang Double. ????

Kieu d lieu ngay, gi


MySQL co 5 dang ngay gi: date _ time datetime _ year timestamp time year Ngay va gi trong MySQL rat uyen chuyen, no co the chap nhan kieu chuoi hoac so hay xet v du sau:
create table date_test( id int unsigned auto_increment, a_date date );

Sau o dung insert e a gia tr ngay vao a_date:


insert into date_test (a_date) values (00-06-01); insert into date_test (a_date) values (2000-06-01);

insert into date_test (a_date) values (20000601); insert into test6 (a_date) values (000601);

MySQL tng thch vi viec nhan gia tr ngay la kieu chuoi hn. Cho nen "000501 la chon la thch hp hn la viec nhap mot so nguyen. S dung gia tr chuoi cho ngay giup ban se tranh c mot so s co ve sau.

MySQL co ho tr mot so ham giup ban trong viec rut trch d lieu dang ngay. DATE Cach s dung: date nh dang cua ngay nh sau: YYYY-MM-DD. Cho phep ban cac gia tr t 1000-01-01 en 9999-12-31. DATETIME Cach s dung: datetime [null | not null] [default] nh dang cua ngay gi nh sau: YYYY-MM-DD HH:MM:SS. Cho phep ban cac gia tr t 1000-01-01 00:00:00 en 9999-12-31 23:59:59.

TIMESTAMP Cach s dung: timestamp(size) ay la kieu d lieu ghi nhan t ong gi giac sa oi gan nhat oi vi mot record, bat khi khi nao no c tao ra, hoac cap nhat eu xay ra viec ghi nhan nay. Size cua no co the nh ngha trong khoang t 2 en 14. Bang sau trnh bay cac size. Gia tr mac nh la 14. Size 2 4 6 8 10 12 14 nh dang YY YYMM YYMMDD YYYYMMDD YYMMDDHHMM YYMMDDHHMMSS YYYYMMDDHHMMSS

TIME Cach s dung: time Lu tr dang gi theo nh dang HH:MM:SS va co gia tr t 838:59:59 en 838:59:59. Ly do ma gia tr nay ln nh vay la e no co the cha c cac ket qua tnh toan gi giac. YEAR Cach s dung: year[(2|4)] Cha d lieu dang nam. Neu s dung hai ky t e bieu th nam th bieu dien c t Co gia tr t 1970 cho en 2069, nen nh: 70 en 99 bieu th t 1970 en 1999, con 01 en 69 bieu th t 2001 en 2069. Dung 4 ky t th bieu dien c t 1901 en 2155.

Tao ch muc INDEX


Bat au t phien ban 3.23.6 cua MySQL ban co the tao index tren bat ky field nao. Cho phep 1 table co 16 field cha index. Cu phap nh sau:
index index_name (indexed_column)
Mac du index_name la tuy chon, nhng ban nen luon luon cho no mot cai ten. Sau nay no rat can thiet khi ban muon xoa bo index cua mot field nao o trong lenh SQL cua ban. Neu ban khong cho ten th MySQL se chon ten index cua field au tien.

Con mot cach na e tao index la khai bao khoa chnh tren field o. Chu y rang bat ky field auto_increment (sort t ong) cung phai c index, va ban nen khai bao no la khoa chnh. Trong v du sau id_col c index:
create table my_table ( id_col int unsigned auto_increment primary key, another_col text );

Khoa chnh co the cung c khai bao giong nh cac index khac ngay sau khi nh ngha mot field:
create table my_table ( id_col int unsigned not null auto_increment, another_col text, primary key(id_col) );

Index co the trai rong ra hn mot cot. Neu nh query s dung 2 hang phoi hp vi nhau trong khi thc hien viec tm kiem, ban co the tao mot index bao gom luon ca 2 vi cac lenh sau:
create table mytable( id_col int unsigned not null, another_col char(200) not null, index dual_col_index(id_col, another_col) );

Index nay se c s dung cho viec tm kiem va tren id_col va tren another_col. Cac index nay lam viec t trai sang phai. Do o index nay se c s dung cho viec tm kiem exclusive tren id_col. Tuy nhien, no se khong exclusive cho viec tm kien tren another_col.

Con mot ieu ve index na la ban co the tao no ch tren mot phan cua field. Bat au t phien ban 3.23 cua MySQL ban co the tao index cac field kieu index tinytext, text, mediumtext va longtext tren 255 ky t au. oi vi char va varchar, ban co the tao index tren mot so ky t au cua field. Cu phap cua no nh sau:
index index_name (column_name(column_length))

V du:
create table my_table( char_column char (255) not null, text_column text not null, index index_on_char (char_column(20)), index index_on_text (text_column(200)) );

Mot index co the am bao gia tr duy nhat ton tai trong moi record cua table bang cach s dung lenh unique.
create table my_table( char_column char (255) not null, text_column text not null, unique index index_on_char (char_column));

Cac loai Table


MySQL ho tr cac dang talble sau: ISAM, MyISAM, BDB va Heap. ISAM la dang table a xa va trong cac ng dung mi khong c s dung. Dang table mac nh la MyISAM. Cu phap e khai bao loai table nay la:
create table table_name type=table_type( col_name column attribute );

Table dang MyISAM co toc o tot va tnh on nh cao. Khong can thiet phai nh ngha mot dang table mi nao khac tr phi ban can dung loai khac cho v mot ly do ac biet nao o. Heap la dang table thng tru trong bo nh. Chung khong c lu tr trong a cng hay cac thiet b dung e tr tin. Cho nen neu b mat ien heap se mat theo. V c tr trong bo nh nen heap co toc o truy cap cao. Tuy nhien ban ch dung cho cac table tam thi trong luc chay chng trnh.

Lenh Alter table


Neu nh ban muon thay oi cac thanh phan cua table ban se s dung lenh alter table. Ban co the thc hien cac thay oi nh: oi ten table, field, index; them hoac xoa field va index; nh ngha lai cac field va index. Cu phap c ban cua lenh nay la:
alter table table_name

Cac lenh con lai tuy thuoc vao thao tac ma chung ta se ban tiep theo ay:

oi ten Table
Cu phap nh sau:
alter table table_name rename new_table_name If you have MySQL version 3.23.27 or higher you can make use of the rename statement.The basic syntax is rename table_name to new_table_name

Them va xoa cot trong Table


Khi them field vao trong table, ban se can phai co nhng nh ngha can thiet cho field o. T phien ban 3.22 cua MySQL cho phep ban chon v tr e at field mi vao trong table. Chc nang nay khong bat buoc.
alter table table_name add column column_name column attributes

V du: alter table my_table add column my_column text not null Cach s dung nh v mot field trong table: S dung lenh first e chen field mi vao v tr au cua table. After e chen vao v tr sau cung tren table:
alter table my_table add column my_next_col text not null first alter table my_table add column my_next_col text not null after my_other_column

e xoa mot field, ban thc hien lenh sau:

alter table table_name drop column column name


Khi thc hien lenh alter oi vi mot table, ban ch nen thc hien mot thao tac oi vi table ma thoi. V du: Ban thc hien viec xoa mot index, sau o tao mot index mi, th khong nen gop chung vao mot lenh alter ma nen thc hien 2 lan.

Them va xoa Index


Ban co the them index bang cach s dung lenh index, unique va primary key, tng t nh viec s dung lenh create vay.
alter table my_table add index index_name (column_name1, column_name2, ...) alter table my_table add unique index_name(column_name) alter table my_table add primary key(my_column)

Ban cung co the bo index bang cach s dung lenh drop:


alter table table_name drop index index_name alter table_name test10 drop primary key

oi thuoc tnh cua cot (field)


Thay oi cach thanh to cua field bang lenh change hoac modify:
alter table table_name change int not null original_column_name new_column_name

Lenh sau la sai:


alter table table_name change my_col2 my_col3;

Neu ban muon ch oi thuoc tnh cua field th dung lenh change va tao field mi cung ten nhng thay oi thuoc tnh. Gia du ban oi field col_1 t kieu char(200) sang varchar(200):
alter table table_name change col_1 col_1 varchar(200)

Vi MySQL phien ban 2.22.16 tr i ban co the dung lenh modify:


alter table table_name modify 1 col_1 varchar(200)

Lenh Insert
Bay gi ban a biet tat ca nhng kien thc can thiet e tao va thc hien cac thay oi tren nh dang table, bay gi ban se tm hieu cach thc e nhap thong tin vao table. Ban se thc hien viec nay bang lenh INSERT:
insert into table_name (column_1, column2, column3,...) values (value1, value2, value3 ...)

Neu trong mot fiedl cho phep gia tr NULL ban co the khong can a vao trong lenh INSERT. Nh ban thay cac chuoi ten field va gia tr eu c at trong dau ngoac n (). Ngoai ra gia tr kieu chuoi phai c bao boc bi dau nhay n. Nh vay neu nh trong chuoi co cha dau nhay n va dau ngoac n th sao? e tranh trng hp lam lan gia dau chuoi va dau phan nh ngha lenh SQL co cac qui nh rang muon a ky hieu ac biet vao chuoi th phai at chung sau dau \ (single quote) (double quote) \ (backslash)

% (percent sign) _ (underscore)

Ban co the thoat ra khoi dau nhay n bang cach s dung 2 dau ngoac n ong m (). Ban s dung cac ky t ac biet sau e thc hien mot thao tac ac thu trong cau lenh: \n (newline) \t (tab) \r (carriage return) \b (back space) Nen lu y mot ieu la, ban khong can phai lo lang ve cac ky t thoat ay trong khi lap trnh PHP. Ban se gap c nhng ham va xac lap trong PHP dung e thc hien viec nay mot cach t ong. Ham addslashes() va cac xac lap trong php.ini se ho tr viec nay.

Lenh Update
Lenh UPDATE co mot chut khac biet so vi cac lenh ma chung ta a khao sat, no thc hien thong qua lenh WHERE. Cu phap thong thng la:
update table_name set col_1=value1, col_2=value_2 where col=value

Xin nhac lai lan na, neu ban muon them vao mot chuoi, ban can phai bao no trong cac dau nhay n va dau thoat. Nen nh rang lenh WHERE trong cau lenh UPDATE co the thc hien bat ky phep so sanh nao pha sau no. Thong thng no hay c dung e nh xac nh mot record n vi khoa chnh. Trong table folks sau ID la khoa chnh. id 1 2 3 4 fname
Don Don Don Don

lname
Liu Corleone Juan Johnson

salary
25,000 800,000 32,000 44,500

Cau lenh sau se tac ong en Don Corleone:


update folks set fname=Vito where id=2

Nh ban thay, neu nh ban dung lenh UPDATE da tren field fname th that khong nen chut nao, v ban co the cap nhat tat ca cac field trong table nay.
update folks set fname=Vito where fname=don

Ban cung co the dung UPDATE e thc hien viec ieu chnh tang lng oi vi nhan vien chang han:
update folks set salary=50000 where salary<50,000

Lenh drop table/drop database


Lenh DROP dung e xoa table hoac ca database. Nen nh mot ieu la mot khi ban thc hien lenh nay roi th ban khong the khoi phuc lai d lieu cua ban. Hay can trong!
drop table table_name drop database database_name

Lenh DROP TABLE c chuyen oi sang PHP thong qua ham mysqlquery(). Neu ban muon xoa database trong PHP, ban can s dung ham mysql_drop_db(). Se c trnh bay can ke cac phan sau!

Lenh show tables


e trnh bay mot danh sach cac table co trong database, ban s dung lenh SHOW TABLES. e thc hien c lenh nay ban nen lu y la phai chon database trc a bang lenh USE DATABASE Hnh sau la ket qua cua viec thc hien lenh SHOW TABLES t dau nhac lenh.

Lenh Show table

Trong PHP, ban co the cho hien th mot danh sach table bang cach s dung ham MYSQL_LIST_TABLES():
<? mysql_connect(localhost, root, ); $result = mysql_list_tables(test); while($row = mysql_fetch_array($result)) { echo $row[0] . <br>\n; } ?>

Lenh show columns /show fields

Cac lenh cho ket qua giong nhau. Bay gi ban hay dung lenh CREATE a hoc e tao mot table sau o dung mot trong hai lenh tren e cho hien th cac field cua no:
create table topics ( topic_id integer not null auto_increment primary key, parent_id integer default 0 not null, root_id integer default 0, name varchar(255),

description text null, create_dt timestamp, modify_dt timestamp, author varchar(255) null, author_host varchar(255) null, index my_index(parent_id) )

Hnh sau trnh bay ket qua cua lenh SHOW FIELDS thc hien t dau nhac lenh:

Lenh Show Fields

Ban co the cho ra ke qua tng t trong PHP bang cach s dung ham MYSQL_FIELD_NAME(), MYSQL_FIELD_TYPE(), va MYSQL_FIELD_LEN(). Tat ca cac cac ham nay c trnh bay can ke cac phan sau.
$db = mysql_connect(localhost,root, ) or die (Could not connect to localhost); mysql_select_db(test, $db) or die (Could not find test); $db_name =topics; $query = select * from $db_name; $result = mysql_query($query); $num_fields = mysql_num_fields($result); //create table header echo <table border = 1>; echo <tr>; for ($i=0; $i<$num_fields; $i++) { echo <th>; echo mysql_field_name ($result, $i); echo </th>;

} echo </tr>; //end table header //create table body echo <tr>; for ($i=0; $i<$num_fields; $i++) { echo <td valign = top>; echo mysql_field_type ($result, $i) . <br> \n; echo ( . mysql_field_len ($result, $i) . )<br> \n; echo mysql_field_flags ($result, $i) . <br> \n; echo </td>; } echo </tr>; //end table body echo </table>;

S dung phpMyAdmin
Toi khong loai tr trng hp ban la tn au cua DAU NHAC LENH. Co kha nang la ban khong thch GIAO DIEN O HOA v co the ban cho rang giao dien nay danh cho nhng tay m ma thoi. Nhng toi khuyen ban rang ban hay tap lam viec vi GIAO DIEN O HOA. Ban than toi xuat than t thi dau nhac co lo, va co the noi neu nh nham mat toi van go c tat ca cac ky t tren phm nhanh hn ca viec nhn e go chung. Tuy nhien, tri phu cho ban oi mat ban hay biet hng thu kha nang cua no ng nen bo qua! Va toi cung vay! c vay th chung ta hay bat tay vao viec s dung chng trnh phpMyAdmin. ay la chng trnh co giao dien o hoa ho tr moi truy cap tren CSDL MySQL. Neu nh ban cha co th hay chay ra cac ca hang ngoai Bui Th Xuan hay Ton That Tung kiem ngay mot a i. Khong thoi th download tren cac website phpMyAdmin. Chng trnh nay rat de s dung. Neu nh ban cam thay kho th hay xem phan Phu Luc cua quyen sach, toi co hng dan chi tiet trong o.

phpMyAdmin

Tom tat

Trong chng nay ban a tm hieu tat ca cac lenh can thiet e tao va thao tac vi CSDL trong moi trng MySQL. Ban a biet muc ch cua index. Biet cac kieu d lieu va muc ch s dung theo tuy trng hp. Ngoai ra toi cung gii thieu mot chng trnh quan ly CSDL co giao dien o hoa phpMyAdmin giup ban thao tac thu cong tren CSDL mot cach de dang. Trong phan III va IV ban se tm hieu ky hn va thc hien nhng ng dung quan trong cua CSDL trong chng trnh. (Con tiep) Lu y: Ban co the tm thay cac CD thiet ke web PHP tai cac ca hang CD (Ton That Tung, tp.HCM chang han). Tren CD co trnh cai at Apache, PHP, MySQL thong dung la FOX. Ngoai ra con co cac Website PHP mau. CAC LENH BAI HOC TREN TOT NHAT BAN NEN GO LAI, KHONG NEN COPY!
tongphuockhai@mail15.com - Kien thc la kho bau khong phai cua rieng ai. V vay ban ng ngan ngai khi chia se cho moi ngi.

You might also like