Hướng dẫn dùng getway trong PHP

Khởi tạo Tablegateway

Nế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.

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:

  • isInitialized();
  • initialize();
  • getTable();
  • getAdapter();
  • getColumns();
  • getFeatureSet();
  • getResultSetPrototype();
  • getSql();
  • select($where = null);
  • selectWith(Select $select);
  • insert($set);
  • insertWith(Insert $insert);
  • update($set, $where = null);
  • updateWith(Update $update);
  • delete($where);
  • deleteWith(Delete $delete);
  • getLastInsertValue();

Sử dụng Tablegateway

Dù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 exchangeArray:

     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 Rowgateway

Rowgateway 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 populateexchangeArray.

Bạn truy cập, thiết lập các trường dữ liệu bằng toán tử -> ghi lại dữ liệu bằng hàm save và xóa dòng dữ liệu bằng hàm delete.

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à “users

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
)

Hướng dẫn dùng getway trong PHP

Tiếp theo nhấp vào “users“, trong bảng sẽ hiển thị các cột gồ “id, firstname, lastname, email, reg_date

Bầy giờ tiếp tục nhấp vào tab SQL để thêm mã MySQL vào

INSERT INTO users (id, firstname, lastname, email)
VALUES ('1', 'Le', 'Nghia', '[email protected]');

Cuối cùng ấn nút Tạo (Go) để hoàn tấ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"]."
"; } } else { echo "0 results"; } $conn->close(); ?>

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 posts ở cột menu bên trái => Nhấp vào tab MySQL

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"]."
"; echo "Ngày: ". $row["date"]."
"; echo "Nội dung: ". $row["content"]."
"; } } else { echo "0 results"; } $conn->close(); ?>

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