PHPackages                             ngdang/simple\_querybuilder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. ngdang/simple\_querybuilder

ActiveLibrary[Database &amp; ORM](/categories/database)

ngdang/simple\_querybuilder
===========================

simple query builder by infktern

02PHP

Since Sep 28Pushed 3y ago1 watchersCompare

[ Source](https://github.com/dnang36/simple_querybuilder)[ Packagist](https://packagist.org/packages/ngdang/simple_querybuilder)[ RSS](/packages/ngdang-simple-querybuilder/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Design Parttern bài thực hành 3
===============================

[](#design-parttern-bài-thực-hành-3)

Đề bài: Create simple query builder
-----------------------------------

[](#đề-bài-create-simple-query-builder)

### Thực hiện bởi: [Nguyễn Đoàn Đăng](https://github.com/dnang36)

[](#thực-hiện-bởi-nguyễn-đoàn-đăng)

### Download code và run code tại đường dẫn [https://github.com/dnang36/simple\_querybuilder](https://github.com/dnang36/simple_querybuilder)

[](#download-code-và-run-code-tại-đường-dẫn-httpsgithubcomdnang36simple_querybuilder)

Install
-------

[](#install)

```
composer require ngdang/simple_querybuilder
```

Sử dụng:
--------

[](#sử-dụng)

- use composer autoloader
- thay đổi thông tin dbname,password trong $config

```
require 'vendor/autoload.php';
$config = [
    'host' => 'localhost',
    'dbname' => 'pdotest',
    'charset' => 'utf8',
    'username' => 'root',
    'password' => '12345678',
];
```

- init querybuider with config::connect($config)

```
$query = new QueryBuilder(config::connect($config));
```

- use query buider

```
// Lấy tất cả dữ liệu từ bảng user
$result = $query->select('user')->all();
// lấy user có id > 3 giới hạn là 3 user
$result = $query->select('user')
    ->where([['id','>',3]])
    ->limit(3)
    ->all();
print_r($result);
//thêm user mới:
$query->insert('user',[
    ['name','address'],
    ["hung","thai binh"]
])->go();

//sửa user có id = 4
$query->update('user',[
    'name'=>'vnp',
    'address'=>'102 thái thinh'
    ])->where([['id','=',4]])
    ->go();

//xoá user id = 18;
$query->delete('user')
    ->where([['id','=',18]])
    ->go();
```

-result

```
Array
(
    [0] => Array
        (
            [id] => 1
            [name] => dang
            [address] => ha noi
        )
)
```

- use with PDO

```
$user = ngdang\dto\test\user::query(clone $query)->select()->all();
print_r($user);
```

- result with PDO

```
[0] => ngdang\dto\test\user Object
      (
         [attributes:protected] => Array
            (
               [id] => 1
               name] => dang
               [address] => ha noi
            )

               [original:protected] => Array
               (
               )

            [casts:protected] => Array
                (
                )

                [table:protected] => user
      )
```

Kiến thức nắm được:
-------------------

[](#kiến-thức-nắm-được)

1. Giới thiệu PDO - PHP Data Objects
------------------------------------

[](#1-giới-thiệu-pdo---php-data-objects)

- PHP Data Objects (PDO) là một lớp truy xuất cơ sở dữ liệu cung cấp một phương pháp thống nhất để làm việc với nhiều loại cơ sở dữ liệu khác nhau. Khi làm việc với PDO bạn sẽ không cần phải viết các câu lệnh SQL cụ thể mà chỉ sử dụng các phương thức mà PDO cung cấp, giúp tiết kiệm thời gian và làm cho việc chuyển đổi Hệ quản trị cơ sở dữ liệu trở nên dễ dàng hơn, chỉ đơn giản là thay đổi Connection String (chuỗi kết nối CSDL).

### 1.1. Kết nối cơ sở dữ liệu:

[](#11-kết-nối-cơ-sở-dữ-liệu)

- Mỗi Hệ quản trị cơ sở dữ liệu (Database Management System- DBMS) sẽ có các phương thức kết nối khác nhau (có loại cần Username, Password, đường dẫn đới Database, Port, có loại không). Connection String của các DBMS phổ biến hầu hết đều có dạng như sau:

```
$conn = new PDO('mysql:host=localhost;dbname=pdo', $username, $password);
```

- Với mysql là tên của DBMS, localhost có ý nghĩa database được đặt trên cùng server, pdo là tên của database. $username và $password là 2 biến chứa thông tin xác thực.
- Đế ngắt kết nối khi không cần thao tác với database nữa, các bạn chỉ cần sét biến $conn về null; $conn = null;

### 1.2. Select Data - "Đọc" dữ liệu từ database

[](#12-select-data---đọc-dữ-liệu-từ-database)

- Khi đọc dữ liệu từ database, PDO sẽ trả về dữ liệu theo cấu trúc mảng (array) hoặc đối tượng (object) thông qua phương thức fetch().
- FETCH\_ASSOC: Kiểu fetch này sẽ tạo ra một mảng kết hợp lập chỉ mục theo tên column (nghĩa là các key của mảng chính là tên của column), tương tự như khi ta dùng MySQL/MySQLi Extension

2. Query builder
----------------

[](#2-query-builder)

- query builder la kỹ thuật mà giúp lập trình viên xây dựng ra những câu truy vấn CSDL Quan Hệ một cách nhanh chóng và chính xác thay vì phải tự viết truy vấn.

###  Health Score

14

—

LowBetter than 2% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity24

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/d064d7bd2223d617f8483dc01986c5a97487511e6c22d6086b7f939e619d9135?d=identicon)[dnang36](/maintainers/dnang36)

---

Top Contributors

[![dnang36](https://avatars.githubusercontent.com/u/85975327?v=4)](https://github.com/dnang36 "dnang36 (1 commits)")

### Embed Badge

![Health badge](/badges/ngdang-simple-querybuilder/health.svg)

```
[![Health](https://phpackages.com/badges/ngdang-simple-querybuilder/health.svg)](https://phpackages.com/packages/ngdang-simple-querybuilder)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.4k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M546](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
