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
- PHP 7.3+ đã cài đặt tiện ích mở rộng PDO.
- Cơ sở dữ liệu SQL chẳng hạn như MySQL, MSSQL, SQLite hoặc một công cụ được hỗ trợ khác.
- Đảm bảo trình điều khiển PDO tương ứng đã được cài đặt và bật.
- Kiến thức cơ bản SQL.
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;