PT Português
Versão: v2.3.0

Comece

Começar com Medoo é simples.

Requisitos

PHP PDO Lista de extensões

A lista a seguir mostra qual extensão PDO instalar com base no tipo e plataforma do seu banco de dados.
Nome Driver
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

Instalação do driver PDO do PHP

Medoo requer PHP com suporte PDO. Se PDO ainda não estiver instalado, siga estas etapas.
// Edite o php.ini e remova o ponto e vírgula inicial da extensão de banco de dados que deseja habilitar.

// .dll é usado no Windows. .so é usado no Linux/UNIX.

// Antes
;extension=php_pdo_mysql.dll
;extension=php_pdo_mysql.so

// Depois
extension=php_pdo_mysql.dll
extension=php_pdo_mysql.so

// Salve o arquivo e reinicie o PHP ou o Apache/Nginx.

// Se o PDO estiver instalado corretamente, ele aparecerá em phpinfo().
Ou instale a partir do terminal. A extensão PDO será habilitada e configurada automaticamente.
$ sudo apt-get install php7.4-mysql

Instalação com Composer

Se você usar Composer, instale Medoo com o seguinte comando.
$ composer require catfan/medoo
Composer instala a dependência automaticamente. Execute composer update somente se precisar atualizar as dependências manualmente.
$ composer update

Instalação manual

Uma alternativa simples é baixar medoo.php, colocá-lo em seu projeto e incluí-lo com require.
require 'Medoo.php';

Configuração

Passe um array de configuração para inicializar Medoo e iniciar uma conexão com o banco de dados.
// Carregue o autoloader do Composer.
require 'vendor/autoload.php';

// Importe o namespace do Medoo.
use Medoo\Medoo;

$database = new Medoo([
	// Obrigatório.
	'type' => 'mysql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Opcional.
	'charset' => 'utf8mb4',
	'collation' => 'utf8mb4_general_ci',
	'port' => 3306,

	// Opcional: prefixo de tabela. Todos os nomes de tabela passarão a ser PREFIX_table.
	'prefix' => 'PREFIX_',

	// Opcional: habilita o log. Fica desativado por padrão para melhor desempenho.
	'logging' => true,

	// Opcional.
	// Modo de erro.
	// Define como o PDO relata erros.
	// PDO::ERRMODE_SILENT (padrão) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	// Referência: https://www.php.net/manual/en/pdo.error-handling.php.
	'error' => PDO::ERRMODE_SILENT,

	// Opcional.
	// Opções do driver para a conexão.
	// Referência: https://www.php.net/manual/en/pdo.setattribute.php.
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// Opcional: comandos a executar depois que a conexão com o banco for estabelecida.
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

Conexão DSN personalizada

Você também pode fornecer um DSN personalizado para conectar bancos de dados que Medoo não suporta imediatamente ou para passar parâmetros DSN adicionais.
Formato de cadeia de conexão DSN
{driver}:{chave}={valor};{chave}={valor}
$database = new Medoo([
	'dsn' => [
		// Nome do driver PDO usado no DSN.
		'driver' => 'mydb',
		// Parâmetros DSN como pares chave-valor.
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// Opcional: informa ao Medoo qual comportamento específico do banco deve ser usado.
	'type' => 'mysql',

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

// String DSN final gerada:
mydb:server=12.23.34.45;port=8886

Inicialização a partir de um objeto PDO

Você também pode criar Medoo a partir de um objeto PDO inicializado existente.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');

$database = new Medoo([
	// Reutiliza uma instância de PDO já inicializada e conectada.
	'pdo' => $pdo,

	// Opcional: informa ao Medoo qual comportamento específico do banco deve ser usado.
	'type' => 'mysql'
]);

Para MySQL

Esta opção é apenas para MySQL.
$database = new Medoo([
	// Opcional: socket do MySQL. Não use junto com server e port.
	'socket' => '/tmp/mysql.sock',
]);

Para MariaDB

MariaDB é tratado da mesma forma que MySQL. O tipo de banco de dados é mapeado para mysql automaticamente.
$database = new Medoo([
	'type' => 'mariadb',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',
]);

Para MSSQL

Conexões MSSQL modernas normalmente usam a extensão pdo_sqlsrv no Windows e no Linux/UNIX. Medoo usa o driver pdo_sqlsrv por padrão. Para ambientes legados que exigem pdo_dblib, defina o driver explicitamente durante a inicialização. Consulte https://github.com/Microsoft/msphpsql para obter detalhes.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Opcional: nome da aplicação.
	'appname' => 'test',

	// Opcional.
	// Força o Medoo a usar o driver dblib para MSSQL.
	// Padrão: sqlsrv.
	'driver' => 'dblib'
]);
Medoo também suporta opções de conexão MSSQL ao usar o driver sqlsrv. Veja detalhes em 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',

	// Opcional: opções de conexão 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'
]);

Para SQLite

Banco de dados de arquivos
$database = new Medoo([
	'type' => 'sqlite',
	'database' => 'my/database/path/database.db'
]);
Banco de dados de memória
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ':memory:'
]);
Banco de dados temporário
O banco de dados temporário é excluído quando a conexão é encerrada.
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ''
]);

// Ou simplesmente omita a opcao database.
$database = new Medoo([
	'type' => 'sqlite'
]);

Depurar sequência de DSN

Você pode inspecionar a string DSN final chamando 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

Modo de teste

Este modo é útil para testes. Você pode verificar SQL gerado por meio de $database->queryString em diferentes tipos de banco de dados. As consultas são geradas, mas não executadas.
$database = new Medoo([
	'testMode' => true
]);

// Defina o tipo de banco de dados.
$database->type = 'mysql';

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

echo $database->queryString;