VI Tiếng Việt
Phiên bản: v2.3.0

Bắt đầu

Bắt đầu với Medoo thật đơn giản.

Yêu cầu

Danh sách tiện ích mở rộng PDO của PHP

Danh sách sau đây hiển thị tiện ích mở rộng PDO nào cần cài đặt dựa trên loại và nền tảng cơ sở dữ liệu của bạn.
Tên Trình điều khiển
MySQL, MariaDB php_pdo_mysql
MSSQL php_pdo_sqlsrv / php_pdo_dblib
Oracle php_pdo_oci
SQLite php_pdo_sqlite
PostgreSQL php_pdo_pgsql
Sybase php_pdo_dblib

Cài đặt trình điều khiển PDO của PHP

Medoo yêu cầu PHP có sự hỗ trợ PDO. Nếu PDO chưa được cài đặt, hãy làm theo các bước sau.
// Chỉnh sửa php.ini và xóa dấu chấm phẩy ở đầu phần mở rộng cơ sở dữ liệu bạn muốn bật.

// .dll dùng trên Windows, còn .so dùng trên Linux/UNIX.

// Trước
;extension=php_pdo_mysql.dll
;extension=php_pdo_mysql.so

// Sau
extension=php_pdo_mysql.dll
extension=php_pdo_mysql.so

// Lưu tệp, sau đó khởi động lại PHP hoặc Apache/Nginx.

// Nếu PDO được cài đặt đúng cách, nó sẽ xuất hiện trong phpinfo().
Hoặc cài đặt từ thiết bị đầu cuối. Tiện ích mở rộng PDO sẽ được bật và định cấu hình tự động.
$ sudo apt-get install php7.4-mysql

Cài đặt bằng Composer

Nếu bạn sử dụng Composer, hãy cài đặt Medoo bằng lệnh sau.
$ composer require catfan/medoo
Composer tự động cài đặt phần phụ thuộc. Chỉ chạy composer update nếu bạn cần làm mới các phần phụ thuộc theo cách thủ công.
$ composer update

Cài đặt thủ công

Một cách đơn giản là tải xuống medoo.php, đặt nó vào dự án và nạp bằng require.
require 'Medoo.php';

Cấu hình kết nối

Truyền một mảng cấu hình để khởi tạo Medoo và kết nối tới cơ sở dữ liệu.
// Nạp autoloader của Composer.
require 'vendor/autoload.php';

// Khai báo namespace của Medoo.
use Medoo\Medoo;

$database = new Medoo([
	// Bắt buộc.
	'type' => 'mysql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Tùy chọn.
	'charset' => 'utf8mb4',
	'collation' => 'utf8mb4_general_ci',
	'port' => 3306,

	// Tùy chọn: tiền tố bảng. Mọi tên bảng sẽ trở thành PREFIX_table.
	'prefix' => 'PREFIX_',

	// Tùy chọn: bật ghi log truy vấn. Mặc định tắt để có hiệu năng tốt hơn.
	'logging' => true,

	// Tùy chọn.
	// Chế độ báo lỗi.
	// Xác định cách PDO báo lỗi.
	// PDO::ERRMODE_SILENT (mặc định) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	// Tham khảo: https://www.php.net/manual/en/pdo.error-handling.php.
	'error' => PDO::ERRMODE_SILENT,

	// Tùy chọn.
	// Các tùy chọn driver cho kết nối.
	// Tham khảo: https://www.php.net/manual/en/pdo.setattribute.php.
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// Tùy chọn: các lệnh sẽ chạy sau khi kết nối cơ sở dữ liệu được thiết lập.
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

Kết nối DSN tùy chỉnh

Bạn cũng có thể cung cấp DSN tùy chỉnh để kết nối cơ sở dữ liệu mà Medoo không hỗ trợ ngay lập tức hoặc để chuyển các tham số DSN bổ sung.
Định dạng chuỗi kết nối DSN
{driver}:{key}={value};{key}={value}
$database = new Medoo([
	'dsn' => [
		// Tên driver PDO được dùng trong DSN.
		'driver' => 'mydb',
		// Các tham số DSN ở dạng cặp khóa-giá trị.
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// Tùy chọn: cho Medoo biết hệ cơ sở dữ liệu nào cần áp dụng các xử lý đặc thù.
	'type' => 'mysql',

	'username' => 'your_username',
	'password' => 'your_password'
]);

// Chuỗi DSN được tạo ra cuối cùng:
mydb:server=12.23.34.45;port=8886

Khởi tạo từ instance PDO

Bạn cũng có thể tạo Medoo từ một instance PDO đã được khởi tạo sẵn.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');

$database = new Medoo([
	// Tái sử dụng một instance PDO đã được khởi tạo và kết nối sẵn.
	'pdo' => $pdo,

	// Tùy chọn: cho Medoo biết hệ cơ sở dữ liệu nào cần áp dụng các xử lý đặc thù.
	'type' => 'mysql'
]);

Đối với MySQL

Tùy chọn này chỉ dành cho MySQL.
$database = new Medoo([
	// Tùy chọn: socket MySQL, không dùng cùng lúc với server và port.
	'socket' => '/tmp/mysql.sock',
]);

Dành cho MariaDB

MariaDB được xử lý giống như MySQL. Loại cơ sở dữ liệu được ánh xạ tới mysql một cách tự động.
$database = new Medoo([
	'type' => 'mariadb',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',
]);

Dành cho MSSQL

Các kết nối MSSQL hiện đại thường sử dụng tiện ích mở rộng pdo_sqlsrv trên cả Windows và Linux/UNIX. Medoo sử dụng trình điều khiển pdo_sqlsrv theo mặc định. Đối với các môi trường cũ yêu cầu pdo_dblib, hãy đặt trình điều khiển một cách rõ ràng trong quá trình khởi tạo. Xem https://github.com/Microsoft/msphpsql để biết chi tiết.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Tùy chọn: tên ứng dụng.
	'appname' => 'test',

	// Tùy chọn.
	// Buộc Medoo sử dụng driver dblib cho MSSQL.
	// Mặc định: sqlsrv.
	'driver' => 'dblib'
]);
Medoo cũng hỗ trợ các tùy chọn kết nối MSSQL khi sử dụng trình điều khiển sqlsrv. Xem chi tiết tại https://docs.microsoft.com/en-us/sql/connect/php/connection-options?view=sql-server-2017.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Tùy chọn: các tùy chọn kết nối MSSQL.
	'application_intent' => 'ReadOnly',
	'attach_db_file_name' => './database.sql',
	'authentication' => 'SqlPassword',
	'column_encryption' => 'Enabled',
	'connection_pooling' => 1,
	'encrypt' => 1,
	'failover_partner' => 'MultiSubnetFailover',
	'key_store_authentication' => 'KeyVaultPassword',
	'key_store_principal_id' => 'AzureName',
	'key_store_secret' => 'AzurePass',
	'login_timeout' => '20',
	'multiple_active_result_sets' => 1,
	'multi_subnet_failover' => 'Yes',
	'scrollable' => 'buffered',
	'trace_file' => './path',
	'trace_on' => 1,
	'transaction_isolation' => PDO::SQLSRV_TXN_SNAPSHOT,
	'transparent_network_ip_resolution' => 'Enabled',
	'trust_server_certificate' => 1,
	'wsid' => 'Computer1'
]);

Đối với SQLite

Cơ sở dữ liệu tệp
$database = new Medoo([
	'type' => 'sqlite',
	'database' => 'my/database/path/database.db'
]);
Cơ sở dữ liệu bộ nhớ
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ':memory:'
]);
Cơ sở dữ liệu tạm thời
Cơ sở dữ liệu tạm thời sẽ bị xóa khi đóng kết nối.
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ''
]);

// Hoặc có thể bỏ hẳn tùy chọn database.
$database = new Medoo([
	'type' => 'sqlite'
]);

Gỡ lỗi chuỗi DSN

Bạn có thể kiểm tra chuỗi DSN cuối cùng bằng cách gọi info().
$database = new Medoo([
	'type' => 'mysql',
	'host' => '127.0.0.1',
	'database' => 'test',
	'username' => 'your_username',
	'password' => 'your_password',
]);

echo $database->info()['dsn'];

// mysql:dbname=test;host=127.0.0.1

Chế độ kiểm tra

Chế độ này rất hữu ích khi chạy test. Bạn có thể kiểm tra câu SQL được tạo thông qua $database->queryString với nhiều loại cơ sở dữ liệu khác nhau. Truy vấn sẽ được tạo ra nhưng không thực thi.
$database = new Medoo([
	'testMode' => true
]);

// Thiết lập loại cơ sở dữ liệu.
$database->type = 'mysql';

$database->select("account", ["user_name"], ["user_id[>]" => 10]);

echo $database->queryString;