
Bài 16: Các thao tác k t n i t i MySQL và l a ch n CSDLế ố ớ ự ọ
b ng PHPằ
Bài vi t này s t p trung vào vi c khai thác h qu n tr CSDL mi n phí MySQL.ế ẽ ậ ệ ệ ả ị ễ
T i sao l i s d ng MySQL?ạ ạ ử ụ
MySQL là m t ph n m m qu n tr CSDL mã ngu n m , n m trong nhóm LAMPộ ầ ề ả ị ồ ở ằ
(Linux - Apache -MySQL - PHP). "Liên minh" mã m này đang đ c coi là m t đ iở ượ ộ ố
tr ng v i các s n ph m mã đóng "đ t vãi..." (vãi gì thì tôi không bi t ọ ớ ả ẩ ắ ế ) c a Microsoftủ
(Windows, IIS, SQL Server, ASP/ASP.NET).
M t s đ c đi m c a MySQLộ ố ặ ể ủ
MySQL là m t ph n m m qu n tr CSDL d ng server-based (g n t ng đ ng v iộ ầ ề ả ị ạ ầ ươ ươ ớ
SQL Server c a Microsoft).ủ
MySQL qu n lý d li u thông qua các CSDL, m i CSDL có th có nhi u b ng quanả ữ ệ ỗ ể ề ả
h ch a d li u.ệ ứ ữ ệ
MySQL có c ch phân quy n ng i s d ng riêng, m i ng i dùng có th đ cơ ế ề ườ ử ụ ỗ ườ ể ượ
qu n lý m t ho c nhi u CSDL khác nhau, m i ng i dùng có m t tên truy c p (userả ộ ặ ề ỗ ườ ộ ậ
name) và m t kh u t ng ng đ truy xu t đ n CSDL.ậ ẩ ươ ứ ể ấ ế
Khi ta truy v n t i CSDL MySQL, ta ph i cung c p tên truy c p và m t kh u c a tàiấ ớ ả ấ ậ ậ ẩ ủ
kh an có quy n s d ng CSDL đó. N u không, chúng ta s không làm đ c gì c .ỏ ề ử ụ ế ẽ ượ ả
Các b c xây d ng ch ng trình có k t n i t i CSDL:ướ ự ươ ế ố ớ
Thông th ng, trong m t ng d ng có giao ti p v i CSDL, ta ph i làm theo b n trìnhườ ộ ứ ụ ế ớ ả ố
t sau:ự
B c 1: Thi t l p k t n i t i CSDL.ướ ế ậ ế ố ớ
B c 2: L a ch n CSDL.ướ ự ọ
B c 3: Ti n hành các truy v n SQL, x lý các k t qu tr v n u cóướ ế ấ ử ế ả ả ề ế
B c 4: Đóng k t n i t i CSDL.ướ ế ố ớ
N u nh trong l p trình thông th ng trên Windows s d ng các ch ng trình đi uế ư ậ ườ ử ụ ươ ề
khi n trung gian (ADO, ODBC...) đ th c hi n k t n i và truy v n, thì trong PHP, khiể ể ự ệ ế ố ấ
l p trình t ng tác v i CSDL, chúng ta th ng s d ng thông qua các hàm.ậ ươ ớ ườ ử ụ
Chú ý: Tr c khi s d ng PHP đ l p trình v i MySQL, hãy s d ng ch ng trìnhướ ử ụ ể ậ ớ ử ụ ươ
qu n lý phpMyAdmin đ t o tr c m t CSDL, vài b ng cũng nh ng i dùng... đả ể ạ ướ ộ ả ư ườ ể
ti n th c hành. Bài h ng d n s d ng phpMyAdmin s đ c trình bày sau. ệ ự ướ ẫ ử ụ ẽ ượ
Trong bài vi t này, tôi s d ng MySQL ch y trên n n máy ch localhost, ng i sế ử ụ ạ ề ủ ườ ử
d ng c a CSDL này có username là mysql_user, m t kh u là mysql_passwordụ ủ ậ ẩ
Thi t l p kêt n i t i MySQL.ế ậ ố ớ

Đ k t n i t i MySQL, ta s d ng hàm mysql_connect()ể ế ố ớ ử ụ
Cú pháp:
PHP Code:
mysql_connect(host,tên_truy_c pậ,m t_kh uậ ẩ );
trong đó:
host là chu i ch a tên (ho c đ a ch IP) c a máy ch cài đ t MySQL.ỗ ứ ặ ị ỉ ủ ủ ặ
tên_truy_c p là chu i ch a tên truy c p h p l c a CSDL c n k t n iậ ỗ ứ ậ ợ ệ ủ ầ ế ố
m t_kh u là chu i ch a m t kh u t ng ng v i tên truy c pậ ẩ ỗ ứ ậ ẩ ươ ứ ớ ậ
Ví d :ụ
PHP Code:
<?
mysql_connect ("localhost", "thu_mot_ti","thu_hai_ti");
?>
Khi k t n i t i MySQL thành công, hàm s tr v giá tr là m t s nguyên đ nh danhế ố ớ ẽ ả ề ị ộ ố ị
c a liên k t, ng c l i, hàm tr v giá tr false.ủ ế ượ ạ ả ề ị
Ta có th dùng hàm if đ ki m tra xem có k t n i đ c t i MySQL hay không:ể ể ể ế ố ượ ớ
PHP Code:
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$link)
{
echo "Không thể k tế n iố đ cượ t iớ CSDL MySQL";
}
?>
L a ch n CSDLự ọ
Đ l a ch n m t CSDL nào đó mà ng i s d ng có tên là tên_truy_c p" có quy n sể ự ọ ộ ườ ử ụ ậ ề ử
d ng, ta dùng hàm mysql_select_db:ụ
mysql_select_db (tên_CSDL);
Hàm này th ng đ c dùng sau khi thi t l p k t n i b ng hàm mysql_connect. Hàmườ ượ ế ậ ế ố ằ
này tr v true n u thành công, false n u th t b i.ả ề ế ế ấ ạ
VD:
PHP Code:
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$link)
{
echo "Không thể k tế n iố đ cượ t iớ MySQL";
}
if (!mysql_select_db ("Forums"))
{
echo "Không thể l aự ch nọ đ cượ CSDL Forums";
}
?>
Đóng k t n i t i CSDL:ế ố ớ
Đ đóng k t n i t i CSDL, ta dùng hàm mysql_close.ể ế ố ớ
Hàm này có nhi m v đóng k t n i t i CSDL có mã đ nh danh đ c t o ra b i hàmệ ụ ế ố ớ ị ượ ạ ở

mysql_connect().
Cú pháp:
PHP Code:
mysql_close(mã_đ nh_danh_k t_n iị ế ố ).
Ví d :ụ
PHP Code:
<?php
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
if (!$link)
{
echo "Không thể k tế n iố đ cượ t iớ MySQL";
}
mysql_close($link);
?>

