Medoo

开始

更新日志

Where 语句

查询

聚合

Fetch

事务

原生SQL查询

Raw object

PDO object

Debug

数据库信息

开始

使用Medoo是非常简单的事!

Medoo1.2开始不支持PHP5.4或以下,若你使用的是1.2以前的版本,请选择菜单 中文文档(<1.2)

要求

Tips

在PHP5.4+中你可以使用[]作为数组参数语法,而不再使用array().

// On PHP 5.1
var data = array("foo", "bar");

// On PHP 5.4+
var data = ["foo", "bar"];

php_pdo 扩展列表

PHP PDO安装

medoo需要PHP支持PDO扩展,请在安装相关扩展后继续以下操作

// 打开php.ini找到你想要的相应扩展,去掉前面的;号即可
// 将
;extension=php_pdo_mysql.dll
// 修改成
extension=php_pdo_mysql.dll
// 保存,重启你的PHP或者服务器
//如果PDO安装成功,你可以通过phpinfo()查看到它.
如果你通过终端(linux)命令行安装,系统会自动安装配置相应扩展
$ sudo apt-get install php5-mysql

PHP依赖安装

如果你通过php自带的依赖扩展安装它,可以使用下面的命令,或者你根据自己的需要修改即可。
$ composer require catfan/Medoo
升级方法
$ composer update

安装源文件安装

这是最简单的方法,下载medoo源文件,放到你的PHP开发目录里,载入即可
require  'medoo.php';

配置

这儿提供三种数据库的连接演示.

// If you installed via composer, just use this code to requrie autoloader on the top of your projects.
require 'vendor/autoload.php';

// Using Medoo namespace
use Medoo\Medoo;

$database = new Medoo([
	// required
	'database_type' => 'mysql',
	'database_name' => 'name',
	'server' => 'localhost',
	'username' => 'your_username',
	'password' => 'your_password',

	// [optional]
	'charset' => 'utf8',
	'port' => 3306,

	// [optional] Table prefix
	'prefix' => 'PREFIX_',

	// [optional] Enable logging (Logging is disabled by default for better performance)
	'logging' => true,

	// [optional] MySQL socket (shouldn't be used with server and port)
	'socket' => '/tmp/mysql.sock',

	// [optional] driver_option for connection, read more from http://www.php.net/manual/en/pdo.setattribute.php
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// [optional] Medoo will execute those commands after connected to the database for initialization
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

$database->insert("account", [
	"user_name" => "foo",
	"email" => "foo@bar.com"
]);

定制DSN链接

缺省情况下Medoo不支持的数据库您还可以使用自定义DSN连接,特别是一些新数据库,DSN参数比较特殊,或者如果要为连接添加更多的DSN参数值。

连接格式.

{driver}:{key}={value};{key}={value}
$database = new Medoo([
	// Started using customized DSN connection
	'dsn' => [
		// The PDO driver name for DSN driver parameter
		'driver' => 'mydb',
		// The parameters with key and value for DSN
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// [optional] Medoo will have different handle method according to different database type
	'database_type' => 'mysql',

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

// The final DSN connection string will be generated like this
mydb:server=12.23.34.45;port=8886
    

For MSSQL

如果你要使用Medoo连接你的MSSQL数据库,你需要安装相关扩展:Windows安装pdo_sqlsrv、Linux/UNIX安装pdo_dblib. pdo_mssql 扩展已被PHP废弃,不建议使用.
$database = new Medoo([
	'database_type' => 'mysql',
	'database_name' => 'name',
	'server' => 'localhost',
	'username' => 'your_username',
	'password' => 'your_password',
 
	// [optional] The application name
	'appname' => 'test',
 
	// [optional] If you want to force Medoo to use dblib driver for connecting MSSQL database
	'driver' => 'dblib'
]);
现在Medoo可以使用sqlsrv来驱动MSSQL,详见微软官方文档 https://docs.microsoft.com/en-us/sql/connect/php/connection-options?view=sql-server-2017.
$database = new Medoo([
	'database_type' => 'mysql',
	'database_name' => 'name',
	'server' => 'localhost',
	'username' => 'your_username',
	'password' => 'your_password',
 
	// [optional] MSSQL connection options
	'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'
]);

For SQLite

$database = new medoo([
    'database_type' => 'sqlite',
    'database_file' => 'my/database/path/database.db'
]);

$database->insert("account", [
    "user_name" => "foo",
    "email" => "foo@bar.com"
]);