Class database trong lập trình hướng đối tượng, chúng ta sẽ xây dựng class database có các phương thức cơ bản để chúng ta sử dụng nhiều lần. Lập trình hướng đối tượng nó khác thủ tục ở cái viết một lần để sử dụng nhiều lần đó 
Class database bao gồm
- Kết nới đến cơ sở dữ liệu
- Phương thức query(), thực hiện câu lệnh truy vấn
- Phương thức num_rows() đếm số dòng dữ liệu trả về từ câu truy vấn
- Phương thức fetch() lấy một dòng dữ liệu trả về từ câu truy vấn
- Phương thức fetchAll() lấy nhiều dòng dữ liệu trả về từ câu truy vấn
1. Phép gán, cách truyền biến vào hàm
Như chúng ta đã biết phép gán được ký hiệu bởi dấu " = ", nó được dùng để gán giá trị cho một biến
Ví dụ : $name = "Nguyễn Văn Tèo"; // gán giá trị Nguyễn Văn Tèo cho biến $name
Ở trong một class đôi khi chúng ta cần gán một giá trị cho thuộc tính để sử dụng, chúng ta sẽ set như thế nào, ta xét ví dụ sau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?php class person{ public $ten = "Tèo" ; public function setname( $name ){ $this ->ten = $name ; } public function getname(){ return $this ->ten; } } $person = new person(); echo "Xin chào " . $person ->ten. " <br />" ; // Xin chào Tèo $person ->setname( "Nguyễn Văn Tèo" ); echo $person ->getname(); // Xin chào Nguyễn Văn Tèo ?> |
- Các bạn thấy ở phương thức ( hàm) $person->setname("Nguyễn Văn Tèo"); ta có truyền vào một biến là kiểu string là "Nguyễn Văn Tèo" đây chính là cách ta truyền một biến vào trong một hàm
- Ví dụ về cách truyền biến vào hàm
1
2
3
4
5
6
7
8
9
10
11
| <?php class toan{ public function giaipt( $a , $b ){ $x = - $b / $a ; echo "Phương trình $ax + $b = 0 có x =" . $x ; } } $toan = new toan(); $toan ->giaipt(4,-8); // Phương trình 4x - 8 = 0 có x = 2 ?> |
2. Khởi tạo class database
Ở bài này chúng ta sẽ sử dụng thông tin cơ sở dữ liệu của class config, bạn nào chưa xem có thể xem lại tại đây nhé
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| <?php require ( "config.php" ); // Gọi file config.php class database{ protected $_conn = "" ; protected $_result = "" ; public function __construct(){ // Kết nối csdl đầu tiên $this ->_conn = mysql_connect(config::HOST,config::USER,config::PASS) or die ( "Can't connect database" ); mysql_select_db(config::DATA, $this ->_conn); // Lựa chọn csdl mysql_query( "SET NAMES utf8" ); // Chuyển dữ liệu trả về sang kiểu utf8 } public function query( $sql ){ if ( $this ->_conn){ // nếu đã kết nối csdl $this ->_result = mysql_query( $sql ); /* Gán kết quả trả về của câu truy vấn cho biến $_result */ } } public function num_rows(){ if ( $this ->_result){ // nếu đã có kết quả trả về từ câu truy vấn $rows = mysql_num_rows( $this ->_result); } else { $rows = 0; } return $rows ; // trả về số dòng tìm được } public function fetch(){ if ( $this ->_result){ // nếu có kết quả trả về của câu truy vấn $data = mysql_fetch_assoc( $this ->_result); } else { $data = array (); } return $data ; } public function fetchAll(){ if ( $this ->_result){ // nếu có kết quả trả về của câu truy vấn while ( $db = mysql_fetch_assoc( $this ->_result)){ $data [] = $db ; } } else { $data = array (); } return $data ; } } ?> |
Chắc hẳn các bạn mới học nhìn vào cách viết hướng đối tượng sẽ thấy khó hiểu vì nó không giống cách viết thông thường, nó toàn sử dụng $this với -> phải không nào. Đừng ngại, từ từ chúng ta sẽ tìm hiểu sâu về nó
a. $this được hiểu là class hiện tại, nếu như bình thường bạn gán biến $a = 10, thì trong class sẽ dùng $this->a = 10.
b. Hàm __construct() được gọi để khi ta sử dụng class database mặc định nó sẽ kết nối csdl đầu tiên
Nếu như bình thường ta viết
$conn = mysql_connect("locahot","user","pass");
thì bên hướng đối tượng ta viết
$this->_conn = mysql_connect("locahot","user","pass");
Lúc này biến $_conn sẽ lưu thông tin kết nối csdl ( có thể là đã hoặc chưa kết nối csdl)
c. Hàm query($sql), ở hàm này có chức năng thực hiện truy vấn cơ sở dữ liệu
Nếu như viết thường là
$result = mysql_query($sql);
thì bên hướng đối tượng ta viết
$this->_result = mysql_query($sql);
d. Hàm fetch() lấy ra một dòng dữ liệu trả về từ câu truy vấn
Nếu như viết thường
$result = mysql_query("select * from tbl_users where user_id = 1"):
$data = mysql_fetch_assoc($result);
Bên hướng đối tượng ta sẽ viết
$data
= mysql_fetch_assoc(
$this
->_result);
e. Hàm fetchAll tương tự hàm fetch()Hàm fetchAll() để lấy nhiều dòng kết quả từ câu truy vấn, vì kết quả của truy vấn trả về nhiều dòng dữ liệu nên ta sẽ sử dụng vòng lặp while gán vào biến $data
while
(
$db
= mysql_fetch_assoc(
$this
->_result)){
$data
[] =
$db
;
}
nguồn http://phpandmysql.net/
EmoticonEmoticon