Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải

Để hiểu được chương này một cách rõ ràng, trước tiên bạn cần phải có một số kiến thức cơ

bản về Cơ Sở Dữ Liệu quan hệ. Nếu bạn đã học qua một khoá căn bản về MS Access trong

chương trình đào tạo chứng chỉ B chẳng hạn thì hẳn nhiên bạn có thể tiếp tục. Còn nếu như

bạn chưa biết gì về nó thì tôi sẽ bàn đến nó trong phần Phụ Lục của giáo trình này hoặc bạn

có thể tìm ngay một tài liệu tham khảo về CSDL, dễ nhất là tài liệu và MS Access .

. Tôi chắc rằng bây giờ bạn đã có kiến thức về CSDL và hiểu biết Table là gì rồi! Có hàng

khối công việc bạn sẽ phải làm việc đối với các Table và bạn sẽ được hướng dẫn cặn kẽ

trong quyển sách này. Bạn sẽ phải vượt qua một số kiến thức về nó để mới có thể thành thạo

trong thao tác với Table. Như bạn biết đấy: Con đường đi đến thành công không có trải thảm

sẵn đâu!

Nếu bạn đã từng làm việc với MS SQL Server hay Access chúng đều có hỗ trợ việc tạo CSDL

rất là dễ dàng với giao diện trực quan. Đối với MySQL bạn cũng có thể sử dụng công cụ trực

quan đó là phpMyadmin.

Tuy nhiên, bạn phải học cách thao tác với CSDL bằng dòng lệnh, tôi chắc rằng điều này sẽ

rất có ích cho bạn. Muốn chương trình của bạn trong lúc chạy thao tác tự động với CSDL thì

bạn cần hàng tá lệnh PHP/SQL để thực hiện các yêu cầu của chương trình.Trước khi chúng ta tạo các table trong CSDL của MySQL, có một vài thứ bạn cần phải hiểu

rõ. Những khái niệm cơ bản mà tôi sắp giới thiệu sau đây rất quan trọng. Bạn hãy chắc rằng

mình đã nắm kỹ về chúng trước khi thực hiện việc thiết kế dữ liệu.

Null

Việc đầu tiên bạn phải làm trong việc thiết kế một table là quyết định xem một field có cho

phép giá trị NULL hay không.

Trong CSDL quan hệ, giá trị NULL của một field đồng nghĩa với nó có thể chấp nhận không

có dữ liệu trong đó. Nên nhớ rằng giá trị NULL khác với giá trị của một chuỗi không có ký

tự trong đó hoặc số có giá trị 0.

Đôi khi trong chương trình, bạn sẽ thực hiện một số động tác so sánh xem một chuỗi nào đó

có chứa giá trị hay không, nó có thể là một câu lệnh IF. Xét một ví dụ PHP như sau:

$var //this is a variable used in the test

if ($var == “”)

{

echo “Var is an empty string”;

} else {

echo $var;

}

 

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 1

Trang 1

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 2

Trang 2

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 3

Trang 3

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 4

Trang 4

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 5

Trang 5

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 6

Trang 6

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 7

Trang 7

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 8

Trang 8

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 9

Trang 9

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 47 trang xuanhieu 5700
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải

Bài giảng Lập trình web động với PHP/MySQL - Phần 2 - Tống Phước Khải
MDD 
10 YYMMDDHHMM 
12 YYMMDDHHMMSS 
14 YYYYMMDDHHMMSS 
 TIME 
 Cách sử dụng: time 
 Lưu trữ dạng giờ theo định dạng HH:MM:SS và có giá trị từ –838:59:59 đến 838:59:59. Lý 
 do mà giá trị này lớn như vậy là để nó có thể chứa được các kết quả tính toán giờ giấc. 
 YEAR 
 Cách sử dụng: year[(2|4)] 
 Chứa dữ liệu dạng năm. Nếu sử dụng hai ký tự để biểu thị năm thì biểu diễn được từ Có giá 
trị từ 1970 cho đến 2069, nên nhớ: 70 đến 99 biểu thị từ 1970 đến 1999, còn 01 đến 69 biểu 
thị từ 2001 đến 2069. 
Dùng 4 ký tự thì biểu diễn được từ 1901 đến 2155. 
Tạo chỉ mục INDEX 
Bắt đầu từ phiên bản 3.23.6 của MySQL bạn có thể tạo index trên bất kỳ field nào. Cho 
phép 1 table có 16 field chứa index. Cú pháp như sau: 
index index_name (indexed_column) 
 Mặc dù index_name là tuỳ chọn, nhưng bạn nên luôn luôn cho nó một cái tên. Sau này nó 
 rất cần thiết khi bạn muốn xoá bỏ index của một field nào đó trong lệnh SQL của bạn. 
 Nếu bạn không cho tên thì MySQL sẽ chọn tên index của field đầu tiên. 
Còn một cách nữa để tạo index là khai báo khoá chính trên field đó. Chú ý rằng bất kỳ field 
auto_increment (sort tự động) cũng phải được index, và bạn nên khai báo nó là khoá chính. 
Trong ví dụ sau id_col được index: 
create table my_table ( 
id_col int unsigned auto_increment primary key, 
another_col text 
); 
Khoá chính có thể cũng được khai báo giống như các index khác ngay sau khi định nghĩa một 
field: 
create table my_table ( 
id_col int unsigned not null auto_increment, 
another_col text, 
primary key(id_col) 
); 
Index có thể trải rộng ra hơn một cột. Nếu như query sử dụng 2 hàng phối hợp với nhau trong 
khi thực hiện việc tìm kiếm, bạn có thể tạo một index bao gồm luôn cả 2 với các lệnh 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 này sẽ được sử dụng cho việc tìm kiếm vừa trên id_col vừa trên another_col. Các 
index này làm việc từ trái sang phải. Do đó index này sẽ được sử dụng cho việc tìm kiếm 
exclusive trên id_col. Tuy nhiên, nó sẽ không exclusive cho việc tìm kiến trên another_col. 
 Còn một điều về index nữa là bạn có thể tạo nó chỉ trên một phần của field. Bắt đầu từ phiên 
bản 3.23 của MySQL bạn có thể tạo index các field kiểu index tinytext, text, mediumtext và 
longtext trên 255 ký tự đầu. Đối với char và varchar, bạn có thể tạo index trên một số ký tự 
đầu của field. Cú pháp của nó như sau: 
 index index_name (column_name(column_length)) 
 Ví dụ: 
 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)) 
 ); 
 Một index có thể đảm bảo giá trị duy nhất tồn tại trong mọi record của table bằng cách sử 
 dụng lệnh unique. 
 create table my_table( 
 char_column char (255) not null, 
 text_column text not null, 
 unique index index_on_char (char_column)); 
Các loại Table 
MySQL hỗ trợ các dạng talble sau: ISAM, MyISAM, BDB và Heap. ISAM là dạng table đã 
xưa và trong các ứng dụng mới không được sử dụng. Dạng table mặc định là MyISAM. Cú 
pháp để khai báo loại table này là: 
create table table_name type=table_type( 
col_name column attribute 
); 
Table dạng MyISAM có tốc độ tốt và tính ổn định cao. Không cần thiết phải định nghĩa một 
dạng table mới nào khác trừ phi bạn cần dùng loại khác cho vì một lý do đặc biệt nào đó. 
Heap là dạng table thường trú trong bộ nhớ. Chúng không được lưu trữ trong đĩa cứng hay các 
thiết bị dùng để trữ tin. Cho nên nếu bị mất điện heap sẽ mất theo. Vì được trữ trong bộ nhớ 
nên heap có tốc độ truy cập cao. Tuy nhiên bạn chỉ dùng cho các table tạm thời trong lúc 
chạy chương trình. 
 Lệnh Alter table 
 Nếu như bạn muốn thay đổi các thành phần của table bạn sẽ sử dụng lệnh alter table. Bạn có 
thể thực hiện các thay đổi như: đổi tên table, field, index; thêm hoặc xoá field và index; định 
nghĩa lại các field và index. Cú pháp cơ bản của lệnh này là: 
 alter table table_name 
 Các lệnh còn lại tuỳ thuộc vào thao tác mà chúng ta sẽ bàn tiếp theo đây: 
 Đổi tên Table 
 Cú pháp 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 
Thêm và xoá cột trong Table 
Khi thêm field vào trong table, bạn sẽ cần phải có những định nghĩa cần thiết cho field đó. 
Từ phiên bản 3.22 của MySQL cho phép bạn chọn vị trí để đặt field mới vào trong table. 
Chức năng này không bắt buộc. 
alter table table_name add column column_name column attributes 
Ví dụ: 
alter table my_table add column my_column text not null 
Cách sử dụng định vị một field trong table: Sử dụng lệnh first để chèn field mới vào vị trí đầu 
của table. After để chèn vào vị trí sau cùng trên 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 
Để xoá một field, bạn thực hiện lệnh sau: 
alter table table_name drop column column name 
Khi thực hiện lệnh alter đối với một table, bạn chỉ nên thực hiện một thao tác đối với table mà thôi. Ví dụ: Bạn 
thực hiện việc xoá một index, sau đó tạo một index mới, thì không nên gộp chung vào một lệnh alter mà nên 
thực hiện 2 lần. 
Thêm và xoá Index 
Bạn có thể thêm index bằng cách sử dụng lệnh index, unique và primary key, tương tự như 
việc sử dụng lệnh create vậy. 
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) 
Bạn cũng có thể bỏ index bằng cách sử dụng lệnh drop: 
alter table table_name drop index index_name 
alter table_name test10 drop primary key 
 Đổi thuộc tính của cột (field) 
 Thay đổi cách thành tố của field bằng lệnh change hoặc modify: 
 alter table table_name change original_column_name new_column_name 
 int not null 
 Lệnh sau là sai: 
 alter table table_name change my_col2 my_col3; 
 Nếu bạn muốn chỉ đổi thuộc tính của field thì dùng lệnh change và tạo field mới cùng tên 
nhưng thay đổi thuộc tính. Giả dụ bạn đổi field col_1 từ kiểu char(200) sang varchar(200): 
 alter table table_name change col_1 col_1 varchar(200) 
 Với MySQL phiên bản 2.22.16 trở đi bạn có thể dùng lệnh modify: 
 alter table table_name modify 1 col_1 varchar(200) 
Lệnh Insert 
Bây giờ bạn đã biết tất cả những kiến thức cần thiết để tạo và thực hiện các thay đổi trên 
định dạng table, bây giờ bạn sẽ tìm hiểu cách thức để nhập thông tin vào table. Bạn sẽ thực 
hiện việc này bằng lệnh INSERT: 
insert into table_name (column_1, column2, column3,...) values 
(value1, value2, value3 ...) 
Nếu trong một fiedl cho phép giá trị NULL bạn có thể không cần đưa vào trong lệnh 
INSERT. 
Như bạn thấy các chuỗi tên field và giá trị đều được đặt trong dấu ngoặc đơn (). Ngoài ra giá 
trị kiểu chuỗi phải được bao bọc bởi dấu nháy đơn. Như vậy nếu như trong chuỗi có chứa dấu 
nháy đơn và dấu ngoặc đơn thì sao? Để tránh trường hợp lẫm lẫn giữa dấu chuỗi và dấu phân 
định nghĩa lệnh SQL có các qui định rằng muốn đưa ký hiệu đặc biệt vào chuỗi thì phải đặt 
chúng sau dấu \ 
 ‘ (single quote) 
 “ (double quote) 
 \ (backslash) 
 % (percent sign) 
 _ (underscore) 
Bạn có thể thoát ra khỏi dấu nháy đơn bằng cách sử dụng 2 dấu ngoặc đơn đóng mở (). 
Bạn sử dụng các ký tự đặc biệt sau để thực hiện một thao tác đặc thù trong câu lệnh: 
\n (newline) 
 \t (tab) 
 \r (carriage return) 
 \b (back space) 
Nên lưu ý một điều là, bạn không cần phải lo lắng về các ký tự thoát ở đây trong khi lập 
trình PHP. Bạn sẽ gặp được những hàm và xác lập trong PHP dùng để thực hiện việc này 
một cách tự động. Hàm addslashes() và các xác lập trong php.ini sẽ hỗ trợ việc này. 
 Lệnh Update 
 Lệnh UPDATE có một chút khác biệt so với các lệnh mà chúng ta đã khảo sát, nó thực hiện 
 thông qua lệnh WHERE. Cú pháp thông thường là: 
 update table_name set col_1=value1, col_2=value_2 where col=value 
 Xin nhắc lại lần nữa, nếu bạn muốn thêm vào một chuỗi, bạn cần phải bao nó trong các dấu 
nháy đơn và dấu thoát. Nên nhớ rằng lệnh WHERE trong câu lệnh UPDATE có thể thực hiện 
bất kỳ phép so sánh nào ở phía sau nó. Thông thường nó hay được dùng để định xác định một 
record đơn với khoá chính. Trong table folks sau ID là khoá chính. 
 id fname lname salary 
 1 Don Liu 25,000 
 2 Don Corleone 800,000 
 3 Don Juan 32,000 
 4 Don Johnson 44,500 
Câu lệnh sau sẽ tác động đến Don Corleone: 
update folks set fname=’Vito’ where id=2 
Như bạn thấy, nếu như bạn dùng lệnh UPDATE dựa trên field fname thì thật không nên chút 
nào, vì bạn có thể cập nhật tất cả các field trong table này. 
update folks set fname=’Vito’ where fname=’don’ 
Bạn cũng có thể dùng UPDATE để thực hiện việc điều chỉnh tăng lương đối với nhân viên 
chẳng hạn: 
update folks set salary=50000 where salary<50,000 
Lệnh drop table/drop database 
Lệnh DROP dùng để xoá table hoặc cả database. Nên nhớ một điều là một khi bạn thực hiện 
lệnh này rồi thì bạn không thể khôi phục lại dữ liệu của bạn. Hãy cẩn trọng! 
drop table table_name 
drop database database_name 
Lệnh DROP TABLE được chuyển đổi sang PHP thông qua hàm mysqlquery(). Nếu bạn 
muốn xoá database trong PHP, bạn cần sử dụng hàm mysql_drop_db(). Sẽ được trình bày căn 
kẽ ở các phần sau! 
Lệnh show tables 
Để trình bày một danh sách các table có trong database, bạn sử dụng lệnh SHOW TABLES. 
Để thực hiện được lệnh này bạn nên lưu ý là phải chọn database trước đã bằng lệnh USE 
DATABASE 
Hình sau là kết quả của việc thực hiện lệnh SHOW TABLES từ dấu nhắc lệnh. 
Lệnh Show table 
Trong PHP, bạn có thể cho hiển thị một danh sách table bằng cách sử dụng hàm 
MYSQL_LIST_TABLES(): 
<? 
mysql_connect(“localhost”, “root”, “”); 
$result = mysql_list_tables(“test”); 
while($row = mysql_fetch_array($result)) 
{ 
echo $row[0] . “\n”; 
} 
?> 
Lệnh show columns /show fields 
Các lệnh cho kết quả giống nhau. Bây giờ bạn hãy dùng lệnh CREATE đã học để tạo một 
table sau đó dùng một trong hai lệnh trên để cho hiển thị các field của nó: 
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) 
) 
Hình sau trình bày kết quả của lệnh SHOW FIELDS thực hiện từ dấu nhắc lệnh: 
Lệnh Show Fields 
Bạn có thể cho ra kế quả tương tự trong PHP bằng cách sử dụng hàm 
MYSQL_FIELD_NAME(), MYSQL_FIELD_TYPE(), và MYSQL_FIELD_LEN(). Tất cả 
các các hàm này được trình bày cặn kẽ ở các phần 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 “”; 
echo “”; 
for ($i=0; $i<$num_fields; $i++) 
{ 
echo “”; 
echo mysql_field_name ($result, $i); 
echo “”; 
} 
echo “”; 
//end table header 
//create table body 
echo “”; 
for ($i=0; $i<$num_fields; $i++) 
{ 
echo “”; 
echo mysql_field_type ($result, $i) . “ \n”; 
echo “(“ . mysql_field_len ($result, $i) . “) \n”; 
echo mysql_field_flags ($result, $i) . “ \n”; 
echo “”; 
} 
echo “”; 
//end table body 
echo “”; 
 Sử dụng phpMyAdmin 
 Tôi không loại trừ trường hợp bạn là tín đầu của DẤU NHẮC LỆNH. Có khả năng là bạn 
 không thích GIAO DIỆN ĐỒ HOẠ vì có thể bạn cho rằng giao diện này dành cho những tay 
 mơ mà thôi. Nhưng tôi khuyên bạn rằng bạn hãy tập làm việc với GIAO DIỆN ĐỒ HOẠ. 
 Bản thân tôi xuất thân từ thời dấu nhắc cổ lỗ, và có thể nói nếu như nhắm mắt tôi vẫn gõ 
 được tất cả các ký tự trên phím nhanh hơn cả việc nhìn để gõ chúng. Tuy nhiên, trời phú cho 
 bạn đôi mắt bạn hãy biết hưởng thụ khả năng của nó đừng nên bỏ qua! Và tôi cũng vậy! 
 Được vậy thì chúng ta hãy bắt tay vào việc sử dụng chương trình phpMyAdmin. Đây là 
 chương trình có giao diện đồ hoạ hỗ trợ mọi truy cập trên CSDL MySQL. Nếu như bạn chưa 
 có thì hãy chạy ra các cửa hàng ngoài Bùi Thị Xuân hay Tôn Thất Tùng kiếm ngay một đĩa 
đi. Không thôi thì download trên các website phpMyAdmin. Chương trình này rất dễ sử dụng. 
Nếu như bạn cảm thấy khó thì hãy xem phần Phụ Lục của quyển sách, tôi có hướng dẫn chi 
 tiết trong đó. 
phpMyAdmin 
 Tóm tắt 
 Trong chương này bạn đã tìm hiểu tất cả các lệnh cần thiết để tạo và thao tác với CSDL 
trong môi trường MySQL. Bạn đã biết mục đích của index. Biết các kiểu dữ liệu và mục đích 
 sử dụng theo tuỳ trường hợp. Ngoài ra tôi cũng giới thiệu một chương trình quản lý CSDL có 
 giao diện đồ hoạ phpMyAdmin giúp bạn thao tác thủ công trên CSDL một cách dễ dàng. 
 Trong phần III và IV bạn sẽ tìm hiểu kỹ hơn và thực hiện những ứng dụng quan trọng của 
 CSDL trong chương trình. (Còn tiếp) 
 Lưu ý: 
 Bạn có thể tìm thấy các CD thiết kế web PHP tại các cửa hàng CD (Tôn Thất Tùng, tp.HCM 
 chẳng hạn). Trên CD có trình cài đặt Apache, PHP, MySQL thông dụng là FOX. Ngoài ra 
 còn có các Website PHP mẫu. 
 CÁC LỆNH Ở BÀI HỌC TRÊN TỐT NHẤT BẠN NÊN GÕ LẠI, KHÔNG NÊN COPY! 
 tongphuockhai@mail15.com 
- Kiến thức là kho báu không phải của riêng ai. Vì vậy bạn đừng ngần ngại khi chia sẻ cho mọi người. 

File đính kèm:

  • pdfbai_giang_lap_trinh_web_dong_voi_phpmysql_phan_2_tong_phuoc.pdf