Hướng dẫn dùng getway trong PHP
Khởi tạo TablegatewayNếu khi làm việc với một bảng dữ liệu, bạn có thể trực tiếp sử dung TableGateway để dễ dàng và nhanh chóng hơn. Để khởi tạo và sử dụng TableGateway bạn phải có đối tượng \Zend\Db\Adapter trước và chỉ ra tên bảng khi khởi tạo. Show Ví dụ khởi tạo như sau: $tablegateway= new TableGateway('tablename', $adapter); Sau khi khởi tạo thì rất dễ dàng sử dụng các phương thức mà Tablegateway cung cấp để thao tác với một bảng dữ liệu. Nó cung cấp các phương thức sau:
Sử dụng TablegatewayDùng để lấy các dòng dữ liệu của bảng, tham số của select là $where làm mảng điểu kiện hoặc đối tượng \Zend\Db\Sql\Where use Zend\Db\TableGateway\TableGateway;
$projectTable = new TableGateway('project', $adapter);
$where = array('type' => 'PHP'); //Hoặc $where =new \Zend\Db\Sql\Where(); $where->equalTo('type','PHP');
$rowset = $projectTable->select($where);
echo 'Projects of type PHP: ';
foreach ($rowset as $projectRow) {
echo $projectRow['name'] . PHP_EOL;
} Hoặc bạn chỉ lấy 1 dòng dữ liệu $artistTable = new TableGateway('artist', $adapter); $rowset = $artistTable->select(array('id' => 2)); $artistRow = $rowset->current(); Với cách khởi tạo như trên dữ liệu xuất ra là các mảng mô tả dòng dữ liệu. Để tập hợp dữ liệu là một đối tượng do bạn tự định nghĩa thì có thể thiết lập thêm $resultSetPrototype khi khởi tạo như sau: $resultSetPrototype = new ResultSet();
$resultSetPrototype->setArrayObjectPrototype(new MyClass());
return new TableGateway('album', $dbAdapter, null, $resultSetPrototype); Trong đó MyClass() là lớp bạn định nghĩa.Trong
lớp đó phải có hàm public function exchangeArray($data)
{
//$this->fieldata = (!empty($data['id'])) ? $data['id'] : null;
} Các lệnh khác như delete, update, insert ... được sử dụng theo cách tương tự Sử dụng RowgatewayRowgateway sử dụng để mô tả và thao tác đối với một dòng dữ liệu trong bảng. Khởi tạo Rowgateway bạn cần chỉ ra Primarykey, Table của hàng, và Adapter để có thể cập nhật. $rowgateway = new \Zend\Db\RowGateway\RowGateway($primaryKeyColumn, $table, $adapter); Sau đó có thể nạp dữ liệu vào Rowgateway từ mảng dữ liệu dòng bằng các hàm Bạn truy
cập, thiết lập các trường dữ liệu bằng toán tử Ví dụ: use Zend\Db\RowGateway\RowGateway; $resultSet = $adapter->query('SELECT * FROM `user` WHERE `id` = ?', array(2)); $rowData = $resultSet->current()->getArrayCopy(); // row gateway $rowGateway = new RowGateway('id', 'my_table', $adapter); $rowGateway->populate($rowData, true); $rowGateway->first_name = 'New Name'; $rowGateway->save(); $rowGateway->delete(); Lưu ý: Trong Tablegateway nếu khởi tạo bạn chỉ ra $features thích hợp nó sẽ tự động chuyển kết quả thành RowGateWay use Zend\Db\TableGateway\Feature\RowGatewayFeature; use Zend\Db\TableGateway\TableGateway; $table = new TableGateway('artist', $adapter, new \Zend\Db\TableGateway\Feature\('id')); $results = $table->select(array('id' => 2)); $artistRow = $results->current(); $artistRow->name = 'New Name'; $artistRow->save(); Trong cơ sở dữ liệu Database sẽ chứa nhiều dữ liệu khác nhau. Nó sẽ chia thành các bảng (Table), trong bảng lại có các cột. Ví dụ như bạn sẽ tạo một bảng là “user” với các cột (row) bao gồm id (Bắt buộc), tên, năm sinh… Hoặc đơn giản khi thiết kế website bạn sẽ cần lấy và hiển thị dữ liệu từ Database bằng Php và Mysql show các bài viết ra ngoài. Bài viết này sẽ hướng dẫn tường tận cách thức hiển thị dữ liệu trong database lên màn hình bằng code PHP. Làm thế nào để lấy dữ liệu từ Database trong PHP?Trong bài viết Hướng dẫn tạo Database trong Phpmyadmin chúng ta đã biết cách tạo ra một Database. Tuy nhiên vẫn chưa có một thông tin gì cả. Vì vậy chúng ta phải chèn một thông tin nào đó vào. Trước tiên bạn truy cập vào http://localhost/phpmyadmin nhấp vào cơ sở dữ liệu là “data” Bước 2: Tạo bảng là “ CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) Tiếp theo nhấp vào “ Bầy giờ tiếp tục nhấp vào tab INSERT INTO users (id, firstname, lastname, email) VALUES ('1', 'Le', 'Nghia', '[email protected]'); Cuối cùng ấn nút Lưu ý: Cái id bạn có thể dùng hoặc bỏ đi cũng được. Mỗi một thành viên phải là một id khác nhau Đối với các thành viên khác cũng làm tương tự Bước 3: Lấy dữ liệu từ Database MySQL trong PHP Bạn sẽ sử dụng đoạn code sau: connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname, email, reg_date FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { // Load dữ liệu lên website while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Tên: " . $row["firstname"]. " " . $row["lastname"]. " - Email: ". $row["email"]. " - Ngày đăng ký: ". $row["reg_date"]." Và kết quả cuối cùng sau khi request dữ liệu từ MySQL như thế này: Vậy còn với bài viết thì làm sao nhỉ? Bài viết thì chúng ta cũng sẽ làm tương tự như trên. Sẽ tạo ra một bảng đặt tên là posts bao gồm các cột là “id, title, content, date” bằng đoạn mã MySQL CREATE TABLE posts ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, title VARCHAR(100) NOT NULL, content VARCHAR(1000) NOT NULL, date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) Tiếp theo ấn vào INSERT INTO posts (title, content, date) VALUES ('Đây là đoạn văn tiêu đề', 'Đây là đoạn văn nội dung', ''); Tiếp theo load nội dung ra lên màn hình trình duyệt bằng lênh PHP connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, title, content, date FROM posts"; $result = $conn->query($sql); if ($result->num_rows > 0) { // Load dữ liệu lên website while($row = $result->fetch_assoc()) { echo "Tiêu đề: ". $row["title"]." Oke như vậy là xong rồi!. Để load dữ liệu từ Database lên website chúng ta sẽ dùng tới lệnh SELECT… FROM… và dùng vòng lặp while. Hi vọng với bài viết này bạn sẽ hiểu hơn về cách thức hoạt động của PHP và MySQL |