Zend_Db - Những phương thức cơ bản
Zend_Db là một lớp rất quan trọng trong Zend Framework. Nó giúp chúng ta thao tác với database một cách dễ dàng và linh hoạt. Zend_Db bao gồm nhiều lớp khác nhau như Zend_Db, Zend_Db_Select, Zend_Db_Table ... Ngoài ra nó giúp chúng ta có thể kết nối với nhiều hệ CSDL khác nhau...
CREATE TABLE IF NOT EXISTS `groups` (
`group_id` varchar(4) NOT NULL,
`group_name` varchar(150) NOT NULL,
`group_status` tinyint(1) NOT NULL,
PRIMARY KEY (`group_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `groups` (`group_id`, `group_name`, `group_status`) VALUES
('g001', 'administrator', 1),
('g003', 'member', 1),
('g002', 'Manager', 1);
CREATE TABLE IF NOT EXISTS `members` (
`member_id` mediumint(7) unsigned NOT NULL AUTO_INCREMENT,
`member_name` varchar(50) NOT NULL,
`user_name` varchar(32) NOT NULL,
`email` varchar(20) DEFAULT NULL,
`password` varchar(32) NOT NULL,
`register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`lasted_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`member_status` tinyint(1) NOT NULL,
`group_id` varchar(4) NOT NULL,
PRIMARY KEY (`member_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;
INSERT INTO `members` (`member_id`, `member_name`, `user_name`, `email`, `password`, `register_date`, `lasted_date`, `member_status`, `group_id`) VALUES
(4, 'Tom Nguyen', 'tomnguyen', 'tomnguyen@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:07:41', '0000-00-00 00:00:00', 1, 'g001'),
(2, 'Nguyen Van A', 'meoden', 'meoden@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:06:19', '0000-00-00 00:00:00', 1, 'g003'),
(3, 'NguyenThi Van', 'vannguyen', 'vannguyen@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:06:55', '0000-00-00 00:00:00', 1, 'g003'),
(5, 'An Tran', 'antran', 'antran@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:08:55', '0000-00-00 00:00:00', 1, 'g001'),
(6, 'Nguyen Phong', 'phongnguyen', 'phongnguyen@yahoo.co', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:09:22', '0000-00-00 00:00:00', 1, 'g001'),
(7, 'Nguyen Ha Phuong', 'haphuong', 'haphuong@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:10:10', '0000-00-00 00:00:00', 1, 'g002'),
(8, 'Nguyen Ngoc Van', 'ngocvan', 'ngocvan@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:10:35', '0000-00-00 00:00:00', 1, 'g002'),
(9, 'Nguyen Huy Hiep', 'huyhiep', 'huyhiep@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:11:15', '0000-00-00 00:00:00', 1, 'g002'),
(10, 'Nguyen Huy Toan', 'huytoan', 'huytoan@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:11:56', '0000-00-00 00:00:00', 1, 'g003'),
(11, 'Bui Tien Duc', 'ducbui', 'ducbui@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:20:45', '0000-00-00 00:00:00', 1, 'g003'),
(12, 'Pham Tien Thinh', 'tienthinh', 'tienthinh@yahoo.com', 'e10adc3949ba59abbe56e057f20f883e', '2009-11-24 02:21:08', '0000-00-00 00:00:00', 1, 'g003');
1. Khởi tạo Zend_Db
$db = Zend_Db::factory('Pdo_Mysql', array ('host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'company_2'));
2. setFetchMode ($constant)
FETCH_OBJ: Trả kết quả truy vấn thành các đối tượng
FETCH_ASSOC: Trả kết quả truy vấn thành những mảng liên tục, giữ nguyên tên của field
FETCH_NUM: Trả kết quả truy vấn thành mảng, tên field sẽ được chuyển thành số liên tục
FETCH_BOTH: Trả kết quả truy vấn thành mảng, mảng bao gồm kết quả của 2 kiểu FETCH_ASSOC và FETCH_NUM
Ví dụ 2.1: Chuyển kết quả truy vấn thành một mảng chứa các tên field
$db = Zend_Db::factory('Pdo_Mysql', array ('host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'company_2'));
$db->setFetchMode(Zend_Db::FETCH_OBJ);
3. fetchAll($sql,$bind)
Phương thức fetchAll là phương thức để lấy dữ liệu trong CSDL. Nó tương tự như câu lệnh Select của MySQL
Tham số:
$sql: Câu lệnh truy vấn
$bind: Mảng giá trị truyền vào khi truy vấn
Ví dụ 3.1: Liệt kê những thành viên có group_id = g002 và có member_status = 1
MySQL query
$sql = "SELECT member_id, member_name, user_name
FROM members
WHERE group_id = 'g002'
AND member_status = 1";
mysql_query($sql);
Zend_Db
$sql = "SELECT member_id, member_name, user_name
FROM members
WHERE group_id = 'g002'
AND member_status = 1";
$db->fetchAll($sql);
Ví dụ 3.2: Liệt kê những thành viên có group_id = g002 và có member_status = 1 (truyền tham số)
MySQL query
$group_id = 'g002';
$member_status = 1;
$sql = "SELECT member_id, member_name, user_name
FROM members
WHERE group_id = '" . $group_id . "'
AND member_status = " . $member_status;
mysql_query($sql);
Zend_Db
$sql = "SELECT member_id, member_name, user_name
FROM members
WHERE group_id = ?
AND member_status = ?";
$db->fetchAll($sql,array('g002',1));
4. fetchAssoc ($sql,$bind)
Phương thức fetchAssoc tương tự như fetchAll là phương thức để lấy dữ liệu trong CSDL nhưng nó sẽ trả về một mảng dữ liệu cho dù setFetchMode() ở chế độ nào đi nữa
Tham số:
$sql: Câu lệnh truy vấn
$bind: Mảng giá trị truyền vào khi truy vấn
Ví dụ 4.1: Liệt kê những thành viên có group_id = g002 và có member_status = 1 (truyền tham số)
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$sql = "SELECT member_id, member_name, user_name
FROM members
WHERE group_id = ?
AND member_status = ?";
$db->fetchAssoc($sql,array('g002',1));
5. fetchCol ($sql,$bind)
Phương thức fetchCol là phương thức để lấy dữ liệu trong CSDL nhưng nó chỉ trả về giá trị của field đầu tiên trong kết quả truy vấn
Tham số:
$sql: Câu lệnh truy vấn
$bind: Mảng giá trị truyền vào khi truy vấn
Ví dụ 5.1: Liệt kê mã thành viên có group_id = g002 và có member_status = 1 (truyền tham số)
$sql = "SELECT *
FROM members
WHERE group_id = ?
AND member_status = ?";
$db-> fetchCol($sql,array('g002',1));
6. fetchPairs($sql,$bind)
Phương thức fetchPairs giống phương thức fetchCol để lấy dữ liệu trong CSDL nhưng nó chỉ trả về giá trị của field thứ 2 trong kết quả truy vấn
Tham số:
$sql: Câu lệnh truy vấn
$bind: Mảng giá trị truyền vào khi truy vấn
Ví dụ 6.1: Liệt kê mã thành viên có group_id = g002 và có member_status = 1 (truyền tham số)
$sql = "SELECT *
FROM members
WHERE group_id = ?
AND member_status = ?";
$db-> fetchPairs($sql,array('g002',1));
7. fetchRow($sql,$bind)
Phương thức fetchRow là phương thức để lấy dữ liệu trong CSDL nhưng nó chỉ trả về một dòng dữ liệu duy nhất
Tham số:
$sql: Câu lệnh truy vấn
$bind: Mảng giá trị truyền vào khi truy vấn
Ví dụ 7.1: Liệt kê mã thành viên có group_id = g002 và có member_status = 1 (truyền tham số)
$sql = "SELECT *
FROM members
WHERE group_id = ?
AND member_status = ?";
$db-> fetchRow($sql,array('g002',1));
8. fetchOne ($sql,$bind)
Phương thức fetchOne là phương thức để lấy dữ liệu trong CSDL nhưng nó chỉ trả về một giá trị duy nhất
Tham số:
$sql: Câu lệnh truy vấn
$bind: Mảng giá trị truyền vào khi truy vấn
Ví dụ 8.1:
$sql = "SELECT *
FROM members
WHERE group_id = ?
AND member_status = ?";
$db-> fetchOne($sql,array('g002',1))
9. insert($table, $bind)
Phương thức insert là phương thức để đưa dữ liệu vào CSDL
Tham số:
$table: tên bảng
$bind: Mảng giá trị đưa vào CSDL
Ví dụ 9.1: Thêm một dòng dữ liệu vào bảng groups
$data = array(
'group_id' => 'g004',
'group_name' => 'Nghien cuu',
'group_status' => 1
);
$db->insert('groups', $data);
10. lastInsertId ($table, $primaryKey)
Phương thức lastInsertId là phương thức lấy ID của một record vừa được thêm vào bằng phương thức insert()
Tham số:
$table: tên bảng
$primaryKey: Khóa chính của bảng
Ví dụ 10.1: Thêm một dòng dữ liệu vào bảng members
$data = array(
'member_name' => 'Pham Vu Khanh',
'user_name' => 'KhanhPham',
'email' => 'vukhanh2212@gmail.com',
'password' => md5('123456'),
'register_date' => date('Y-m-d 00:00:00'),
'member_status' => 1,
'group_id' => 'g001'
);
$db->insert('members', $data);
echo '<br>' . $id = $db->lastInsertId();
11. update($table, $data,$where)
Phương thức update là phương thức để cập nhật dữ liệu vào CSDL
Tham số:
$table: tên bảng
$data: Mảng giá trị đưa vào CSDL
$where: điều kiện để cập nhật
Ví dụ 11.1: Thêm một dòng dữ liệu vào bảng groups
$where = " group_id = 'g004'";
$data = array(
'group_name' => 'Research',
'group_status' => 1
);
$db->update('groups', $data, $where);
12. quote($value, $type = null)
Phương thức quote() là phương thức sử để sửa các dấu nháy đơn (‘) thành ( ’) trước khi đưa vào câu truy vấn Select. Hoặc ép kiểu thành dạng số INT hoặc Float. Đây là một phương thức hỗ trợ để trách các lỗ Sql injection nguy hiểm.
Tham số:
$value: tên bảng
$type: Kiểu giá trị của $value (INTEGER – STRING – FLOAT)
Ví dụ 12.1: Tìm thành viên có tên “O’Reilly” trong bảng member
$memberName = $db->quote("O'Reilly",STRING);
// SELECT * FROM members WHERE member_name = 'O'Reilly'
$sql = 'SELECT *
FROM members
WHERE member_name = ' . $memberName;
$result = $db->fetchRow($sql);
Ví dụ 12.2: Tìm thành viên có member_id “3’ ” trong bảng member
$memberID = $db->quote("3' ",INTEGER);
//SELECT * FROM members WHERE member_id = 3
$sql = 'SELECT *
FROM members
WHERE member_id = ' . $memberID;
$result = $db->fetchRow($sql);- 1.cám ơn thầy nhiều.
- 2.Hướng dẫn rất chất lượng. Đã hướng dẫn ít ra phải như thế này dân mù tịt như em mới rõ ngọn rõ...
- 3.Tiếng Anh thì >>thông cãm
- 4.fafa
- 5.Mình đã fix được rồi. Thanks bạn nhiều lắm !
- 6.Dịch vụ quá nguy hiểm... Giờ mới biết Vinaphone có cái dịch vụ "Giết người" này. Nếu biết từ trước...
- 7.cung hay day nhi...
- 8.NGƯỜI TA ĐÃ TỰ BIẾT DỊP TẾT LÀ HAY NGHẼN MẠNG VẬY NHÀ MẠNG LÀM NHƯ THẾ NÀY LÀ CƯỚP KHUYẾN MẠI CỦA...
- 9.Nhóm cuối cùng có lẽ là đáng ngạc nhiên, hoặc có lẽ hoàn toàn rõ ràng - đó là chính phủ. Một câu hỏi...
- 10.Nhóm cuối cùng có lẽ là đáng ngạc nhiên, hoặc có lẽ hoàn toàn rõ ràng - đó là chính phủ. Một câu hỏi...
- 1.Cài đặt và cấu hình ứng dụng Zend Framework (video...
- 2.Lập trình hướng đối tượng trong PHP (video...
- 3.Lập trình hướng đối tượng trong PHP 5 ( PHP OOP )
- 4.Zend Auth với ví dụ login - logout
- 5.Tài liệu Zend Framework
- 6.Hàm xử lý ngày tháng (Date and Time php function)
- 7.Webserver - Hướng dẫn cài đặt và sử dụng Xampp
- 8.Zend_Db - Những phương thức cơ bản
- 9.Các kiểu lập trình trong PHP (Phần 1)
- 10. Zend_Framework & JQuery ajax phân trang
- xin code bat dong san bang php zend framework
- Help help help
- hướng dẫn tối ưu url bằng file htaccess
- mã hóa khó hiểu
- Tuyển 05 Lập Trình Viên PHP
- confix phpmailer host linux
- Học.Viên.Mới.Xin.Giúp.Đỡ!!!!
- Cho mình về validate số điện thoại
- Hướng dẫn sử dụng lệnh YUM trong Linux
- Bị loop khi dùng session




