![]() |
| Học lập trình php - su-dung-csdl-mysql |
KẾT NỐI VÀO MYSQL SERVER
PHP cung cấp hàm mysql_connect để kết nối vèo MySQL server. Cú pháp của hàm này như sau:mysql_connect($server_address, $username, $password)
$server_address là địa chỉ của MySQL server, có thể là domain name hoặc IP address, các ví dụ trong bài viết này sẽ dùng giá trị "localhost" cho $server_address.
$username là tên account dùng để login vào MySQL server, các ví dụ trong bài viết sẽ sử dụng giá trị "root" cho $username.
$password là mật mã để kết nối vào MySQL server, các ví dụ trong bài viết sẽ sử dụng chuỗi rỗng "" làm mật mã.
Hàm mysql_connect sẽ trả về 1 kết nối đến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giá trị FALSE nếu như kết nối không được.
Để đóng kết nối tới MySQL server, PHP cung cấp hàm mysql_close. Đoạn mã sau ví dụ quá trình kết nối vào MySQL server và đóng kết nối.<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
}//end if
//đóng kết nối
mysql_close($conn);
?>
$password là mật mã để kết nối vào MySQL server, các ví dụ trong bài viết sẽ sử dụng chuỗi rỗng "" làm mật mã.
Hàm mysql_connect sẽ trả về 1 kết nối đến MySQL server nếu như quá trình kết nối thành công, hoặc trả về giá trị FALSE nếu như kết nối không được.
Để đóng kết nối tới MySQL server, PHP cung cấp hàm mysql_close. Đoạn mã sau ví dụ quá trình kết nối vào MySQL server và đóng kết nối.<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
}//end if
//đóng kết nối
mysql_close($conn);
?>
CHỌN CSDL ĐỂ LÀM VIỆC
Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để làm việc. PHP cung cấp cho ta hàm mysql_select_db để làm việc này, cú pháp
Sau khi connet vào MySQL server, thao tác tiếp theo là chọn CSDL để làm việc. PHP cung cấp cho ta hàm mysql_select_db để làm việc này, cú pháp
mysql_select_db($db_name[, $conn])
Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện qua lệnh mysql_connect. Các ví dụ trong bài viết này sẽ sử dụng CSDL có tên là test:<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
Với $db_name là tên CSDL cần chọn, $conn là kết nối được thực hiện qua lệnh mysql_connect. Các ví dụ trong bài viết này sẽ sử dụng CSDL có tên là test:<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
}//end if
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server");
}//end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn);
mysql_select_db($DBNAME, $conn);
//đóng kết nối
mysql_close($conn);
?>
mysql_close($conn);
?>
THỰC THI 1 CÂU LỆNH SELECT VÀ LẤY KẾT QUẢ TRẢ VỀ
PHP cung cấp cho ta 3 hàm hữu dụng để thực hiện công việc này:
$result = mysql_query($sql, $conn): thực hiện câu lệnh SQL được cung cấp qua tham số $sql và trả về 1 kết quả kiểu $result (hàm này trả về FALSE nếu như câu lệnh thực hiện không thành công).
mysql_num_rows($result): hàm này trả về số lượng row lấy được qua câu lệnh SELECT (được thực thi bởi hàm mysql_query) trước đó.
$row = mysql_fetch_row($result), $row = mysql_fetch_assoc($result): trả về dòng kết quả hiện thời của câu lệnh select và chuyển con trỏ tới dòng tiếp theo (như vậy lệnh gọi mysql_fetch_row hoặc mysql_fetch_assoc tiếp đó sẽ trả về dòng tiếp theo); hoặc giá trị FALSE nếu như không còn dòng nào để trả về nữa. Kết quả trả về từ 2 hàm này là 1 array.
mysql_error($conn): trả về thông báo lỗi của MySQL server nếu như một lệnh trước đó có lỗi.
$result = mysql_query($sql, $conn): thực hiện câu lệnh SQL được cung cấp qua tham số $sql và trả về 1 kết quả kiểu $result (hàm này trả về FALSE nếu như câu lệnh thực hiện không thành công).
mysql_num_rows($result): hàm này trả về số lượng row lấy được qua câu lệnh SELECT (được thực thi bởi hàm mysql_query) trước đó.
$row = mysql_fetch_row($result), $row = mysql_fetch_assoc($result): trả về dòng kết quả hiện thời của câu lệnh select và chuyển con trỏ tới dòng tiếp theo (như vậy lệnh gọi mysql_fetch_row hoặc mysql_fetch_assoc tiếp đó sẽ trả về dòng tiếp theo); hoặc giá trị FALSE nếu như không còn dòng nào để trả về nữa. Kết quả trả về từ 2 hàm này là 1 array.
mysql_error($conn): trả về thông báo lỗi của MySQL server nếu như một lệnh trước đó có lỗi.
Để hiểu rõ hơn công dụng của các hàm trên, đồng thời phân biệt sự khác nhau giữa 2 hàm mysql_fetch_row và mysql_fetch_assoc, ta cung xem xét các ví dụ sau.
Các ví dụ của ta sẽ sử dụng table có tên là member.
Ví dụ 1: dùng mysql_fetch_row()
echo"Số lượng row tìm được: ".mysql_num_rows($result)."
\n";
while($row = mysql_fetch_row($result)){
echo"Username = ".$row[0]."
\n";
echo"Password = ".$row[1]."
\n";
}//end while
//nên luôn giải phóng bộ nhớ
mysql_free_result($result);
echo"Số lượng row tìm được: ".mysql_num_rows($result)."
\n";
while($row = mysql_fetch_row($result)){
echo"Username = ".$row[0]."
\n";
echo"Password = ".$row[1]."
\n";
}//end while
//nên luôn giải phóng bộ nhớ
mysql_free_result($result);
//đóng kết nối
mysql_close($conn);
Hàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0]
sẽ tương ứng với cột đầu tiên của table, phần tử thứ [1] sẽ
tương ứng với cột thứ hai của table...
Chương trình trên sẽ in ra ra 4 dòng:
Username = abc
Password = 123
Username = def
mysql_close($conn);
Hàm mysql_fetch_row() sẽ trả về 1 array mà phần tử thứ [0]
sẽ tương ứng với cột đầu tiên của table, phần tử thứ [1] sẽ
tương ứng với cột thứ hai của table...
Chương trình trên sẽ in ra ra 4 dòng:
Username = abc
Password = 123
Username = def
Password = 456
Ví dụ 2: dùng mysql_fetch_assoc()<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
}//end if
if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
}//end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "SELECT * FROM member";
$result = mysql_query($sql, $conn);
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
$result = mysql_query($sql, $conn);
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo"Số lượng row tìm được: ".mysql_num_rows($result)."
\n";
\n";
while($row = mysql_fetch_assoc($result)){
echo"Username = ".$row['username']."
\n";
echo"Password = ".$row['password']."
\n";
}//end while
//nên luôn giải phóng bộ nhớ
mysql_free_result($result);
echo"Username = ".$row['username']."
\n";
echo"Password = ".$row['password']."
\n";
}//end while
//nên luôn giải phóng bộ nhớ
mysql_free_result($result);
//đóng kết nối
mysql_close($conn);
mysql_close($conn);
?>
Hàm mysql_fetch_assoc() sẽ trả về 1 array mà các phần tử
sẽ được truy cập qua tên, với tên được lấy từ tên các cột của
table. Chương trình ví dụ 2 cũng sẽ in ra ra 4 dòng:
Username = abc
Password = 123
Hàm mysql_fetch_assoc() sẽ trả về 1 array mà các phần tử
sẽ được truy cập qua tên, với tên được lấy từ tên các cột của
table. Chương trình ví dụ 2 cũng sẽ in ra ra 4 dòng:
Username = abc
Password = 123
Username = def
Password = 456
THỰC THI 1 CÂU LỆNH UPDATE, INSERT hoặc DELETE
Hàm mysql_query cũng được dùng để thực thi các câu lệnh DELETE, INSERT hoặc UPDATE, nhưng lúc này hàm sẽ trả về TRUE nếu câu lệnh thực hiện thành công và FALSE trong trường hợp ngược lại. Để lấy số lượng các row được chèn với lệnh INSERT hoặc bị thay đổi bởi lệnh UPDATE, PHP cung cấp cho ta hàm mysql_affected_rows. Ta hãy xem ví dụ sau:<?php
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$SERVER = "localhost";
$USERNAME = "root";
$PASSWORD = "";
$DBNAME = "test";
$conn = mysql_connect($SERVER, $USERNAME, $PASSWORD);
if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
}//end if
if( !$conn){
//Không kết nối được, thoát ra và báo lỗi
die("không nết nối được vào MySQL server:
".mysql_error($conn));
}//end if
//chọn CSDL để làm việc
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
mysql_select_db($DBNAME, $conn)
or die("Không thể chọn được CSDL: ".mysql_error($conn));
$sql = "INSERT INTO member (username, password)
VALUES ('xyz', '000')";
$result = mysql_query($sql, $conn); //chèn thêm
1 dòng vào table
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
VALUES ('xyz', '000')";
$result = mysql_query($sql, $conn); //chèn thêm
1 dòng vào table
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo"Số lượng row được chèn: "
.mysql_affected_rows($conn)."\n";
// mysql_affected_rows sẽ trả về 1
.mysql_affected_rows($conn)."\n";
// mysql_affected_rows sẽ trả về 1
$sql = "UPDATE member SET password='111' WHEREusername='xyz'";
$result = mysql_query($sql, $conn);
//đổi password của accoutn xyz
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
$result = mysql_query($sql, $conn);
//đổi password của accoutn xyz
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo"Số lượng row được thay đổi:
".mysql_affected_rows($conn)."
\n";
//mysql_affected_rows sẽ trả về 1
".mysql_affected_rows($conn)."
\n";
//mysql_affected_rows sẽ trả về 1
$sql = "DELETE FROM member";
$result = mysql_query($sql, $conn);
//xoá hết tất cả các account
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
$result = mysql_query($sql, $conn);
//xoá hết tất cả các account
if( !$result)
die("Không thể thực hiện được câu lệnh SQL:
".mysql_error($conn));
echo"Số lượng row được xoá:
".mysql_affected_rows($conn)."
\n";
//mysql_affected_rows sẽ trả về 3
".mysql_affected_rows($conn)."
\n";
//mysql_affected_rows sẽ trả về 3
//đóng kết nối
mysql_close($conn);
mysql_close($conn);
?>







