开始使用
使用 Medoo 非常简单!
要求
- PHP 7.3+ 并安装了 PDO 扩展。
- 已安装 SQL 数据库,如 MySQL、MSSQL、SQLite 或其他。
- 确保 php_pdo_xxx 扩展已正确安装并启用。
- 需要一点 SQL 知识。
PHP_PDO 扩展列表
以下列表根据数据库类型、版本或系统平台指示应安装哪个 PDO 扩展。
名称 | 驱动 |
---|---|
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 |
PHP PDO 驱动安装
Medoo 需要 PHP 支持 PDO。如果您之前没有安装,请按照以下步骤操作。
// 编辑 php.ini 文件,并删除您想要安装的数据库扩展前的 ';'。 // .dll 文件用于 Windows,.so 文件用于 Linux/UNIX。 // 从 ;extension=php_pdo_mysql.dll ;extension=php_pdo_mysql.so // 到 extension=php_pdo_mysql.dll extension=php_pdo_mysql.so // 保存文件,然后重启 PHP 或 Apache/Nginx 服务器。 // 如果 PDO 安装成功,您可以在 phpinfo() 输出中找到它。
或者通过终端安装。PDO_XXX 扩展将被启用并自动配置。
$ sudo apt-get install php7.4-mysql
Composer 安装
如果您了解 composer,可以轻松安装和管理版本依赖。只需使用此命令将 Medoo 添加到 composer.json。或者您可以根据需要编辑它。
$ composer require catfan/medoo
然后更新 composer。
$ composer update
下载安装
简单的方法。只需下载 medoo.php 文件并将其放入正确的目录,然后引入它。
require 'Medoo.php';
配置
传递一个配置数组进行初始化并启动数据库连接。
// 引入 Composer 的自动加载器。 require 'vendor/autoload.php'; // 使用 Medoo 命名空间。 use Medoo\Medoo; $database = new Medoo([ // [必需] 'type' => 'mysql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // [可选] 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_general_ci', 'port' => 3306, // [可选] 表前缀。所有表名都将被加上 PREFIX_ 前缀。 'prefix' => 'PREFIX_', // [可选] 启用日志记录。默认情况下为禁用以获得更好的性能。 'logging' => true, // [可选] // 错误模式 // 发生错误时的错误处理策略。 // PDO::ERRMODE_SILENT (默认) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION // 更多信息请访问 https://www.php.net/manual/en/pdo.error-handling.php。 'error' => PDO::ERRMODE_SILENT, // [可选] // 连接的 driver_option。 // 更多信息请访问 http://www.php.net/manual/en/pdo.setattribute.php。 'option' => [ PDO::ATTR_CASE => PDO::CASE_NATURAL ], // [可选] 数据库连接后,Medoo 将执行这些命令。 'command' => [ 'SET SQL_MODE=ANSI_QUOTES' ] ]);
自定义 DSN 连接
您也可以使用自定义 DSN 连接 Medoo 默认不支持的数据库,特别是对于某些需要特殊 DSN 参数进行数据库连接的新数据库,或者如果您想为连接添加比原始更多的 DSN 参数值。
DSN 连接字符串的格式:
{driver}:{key}={value};{key}={value}
$database = new Medoo([ 'dsn' => [ // DSN 驱动参数的 PDO 驱动名称。 'driver' => 'mydb', // DSN 的键值参数。 'server' => '12.23.34.45', 'port' => '8886' ], // [可选] Medoo 将根据不同的数据库类型采用不同的处理方法。 'type' => 'mysql', 'username' => 'your_username', 'password' => 'your_password' ]); // 最终的 DSN 连接字符串将像这样生成。 mydb:server=12.23.34.45;port=8886
PDO 对象初始化
您也可以创建 Medoo 绕过初始化和连接的 PDO 对象。
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password'); $database = new Medoo([ // 初始化和连接的 PDO 对象。 'pdo' => $pdo, // [可选] Medoo 将根据不同的数据库类型采用不同的处理方法。 'type' => 'mysql' ]);
对于 MySQL
此选项仅适用于 MySQL。
$database = new Medoo([ // [可选] MySQL 套接字(不应与服务器和端口一起使用)。 'socket' => '/tmp/mysql.sock', ]);
对于 MariaDB
MariaDB 的行为与 MySQL 相同。数据库类型将自动更改为 mysql。
$database = new Medoo([ 'type' => 'mariadb', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', ]);
对于 MSSQL
自微软最新版本的 MSSQL 数据库以来,它在 Windows 和 Linux/UNIX 平台上都使用 pdo_sqlsrv PHP 扩展。Medoo 默认使用 pdo_sqlsrv 驱动程序连接 MSSQL。您可以在他们的 GitHub 仓库查看更多细节 https://github.com/Microsoft/msphpsql。如果您想使用 pdo_dblib 驱动程序连接旧版本数据库,您需要提供驱动程序选项进行初始化。
$database = new Medoo([ 'type' => 'mssql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // [可选] 应用程序名称。 'appname' => 'test', // [可选] // 如果您想强制 Medoo 使用 dblib 驱动程序连接 MSSQL 数据库。 // 默认值是 sqlsrv。 'driver' => 'dblib' ]);
Medoo 在使用 sqlsrv 驱动程序时也支持连接 MSSQL 数据库的这些选项。您可以从 https://docs.microsoft.com/en-us/sql/connect/php/connection-options?view=sql-server-2017 查看更多细节。
- ApplicationIntent
- AttachDBFileName
- Authentication
- ColumnEncryption
- ConnectionPooling
- Encrypt
- Failover_Partner
- KeyStoreAuthentication
- KeyStorePrincipalId
- KeyStoreSecret
- LoginTimeout
- MultipleActiveResultSets
- MultiSubnetFailover
- Scrollable
- TraceFile
- TraceOn
- TransactionIsolation
- TransparentNetworkIPResolution
- TrustServerCertificate
- WSID
$database = new Medoo([ 'type' => 'mssql', 'host' => 'localhost', 'database' => 'name', 'username' => 'your_username', 'password' => 'your_password', // [可选] 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' ]);
对于 SQLite
文件数据库
$database = new Medoo([ 'type' => 'sqlite', 'database' => 'my/database/path/database.db' ]);
内存数据库
$database = new Medoo([ 'type' => 'sqlite', 'database' => ':memory:' ]);
临时数据库
临时数据库将在连接关闭时被删除。
$database = new Medoo([ 'type' => 'sqlite', 'database' => '' ]); // 或者简单地不提供数据库选项。 $database = new Medoo([ 'type' => 'sqlite' ]);
调试 DSN 字符串
您可以通过调用 info() 查看最终的 DSN 字符串。
$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
测试模式
用于测试用例。您可以通过 $database->queryString 测试生成的查询到不同的数据库。所有查询都不会被执行。
$database = new Medoo([ 'testMode' => true ]); // 设置数据库类型。 $database->type = 'mysql'; $database->select("account", ["user_name"], ["user_id[>]" => 10]); echo $database->queryString;