DE Deutsch
Version: v2.3.0

Legen Sie los

Der Einstieg mit Medoo ist unkompliziert.

Anforderungen

Liste der PHP-PDO-Erweiterungen

Die folgende Liste zeigt, welche PDO Erweiterung basierend auf Ihrem Datenbanktyp und Ihrer Plattform installiert werden muss.
Name Treiber
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 Treiberinstallation

Medoo erfordert PHP mit PDO-Unterstützung. Wenn PDO noch nicht installiert ist, befolgen Sie diese Schritte.
// Bearbeiten Sie php.ini und entfernen Sie das führende Semikolon bei der Datenbankerweiterung, die Sie aktivieren möchten.

// .dll wird unter Windows verwendet. .so wird unter Linux/UNIX verwendet.

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

// Nachher
extension=php_pdo_mysql.dll
extension=php_pdo_mysql.so

// Speichern Sie die Datei und starten Sie dann PHP oder Apache/Nginx neu.

// Wenn PDO korrekt installiert ist, erscheint es in phpinfo().
Oder vom Terminal aus installieren. Die Erweiterung PDO wird automatisch aktiviert und konfiguriert.
$ sudo apt-get install php7.4-mysql

Composer-Installation

Wenn Sie Composer verwenden, installieren Sie Medoo mit dem folgenden Befehl.
$ composer require catfan/medoo
Composer installiert die Abhängigkeit automatisch. Führen Sie composer update nur aus, wenn Sie Abhängigkeiten manuell aktualisieren müssen.
$ composer update

Manuelle Installation

Eine einfache Alternative besteht darin, medoo.php herunterzuladen, in Ihrem Projekt abzulegen und per require einzubinden.
require 'Medoo.php';

Konfiguration

Übergeben Sie ein Konfigurationsarray, um Medoo zu initialisieren und eine Datenbankverbindung zu starten.
// Laden Sie den Autoloader von Composer.
require 'vendor/autoload.php';

// Importieren Sie den Medoo-Namensraum.
use Medoo\Medoo;

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

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

	// Optional: Tabellenpraefix. Alle Tabellennamen werden zu PREFIX_table.
	'prefix' => 'PREFIX_',

	// Optional: Protokollierung aktivieren. Standardmaessig deaktiviert fuer bessere Leistung.
	'logging' => true,

	// Nicht erforderlich.
	// Fehlermodus.
	// Legt fest, wie PDO Fehler meldet.
	// PDO::ERRMODE_SILENT (Standard) | PDO::ERRMODE_WARNING | PDO::ERRMODE_EXCEPTION
	// Referenz: https://www.php.net/manual/en/pdo.error-handling.php.
	'error' => PDO::ERRMODE_SILENT,

	// Nicht erforderlich.
	// Treiberoptionen fuer die Verbindung.
	// Referenz: https://www.php.net/manual/en/pdo.setattribute.php.
	'option' => [
		PDO::ATTR_CASE => PDO::CASE_NATURAL
	],

	// Optional: Befehle, die nach dem Aufbau der Datenbankverbindung ausgefuehrt werden.
	'command' => [
		'SET SQL_MODE=ANSI_QUOTES'
	]
]);

Benutzerdefinierte DSN-Verbindung

Sie können auch einen benutzerdefinierten DSN bereitstellen, um Datenbanken zu verbinden, die Medoo standardmäßig nicht unterstützt, oder um zusätzliche DSN-Parameter zu übergeben.
DSN-Verbindungszeichenfolgenformat
{driver}:{key}={value};{key}={value}
$database = new Medoo([
	'dsn' => [
		// Im DSN verwendeter PDO-Treibername.
		'driver' => 'mydb',
		// DSN-Parameter als Schluessel-Wert-Paare.
		'server' => '12.23.34.45',
		'port' => '8886'
	],
	// Optional: Gibt Medoo vor, welches datenbankspezifische Verhalten verwendet werden soll.
	'type' => 'mysql',

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

// Endgueltig erzeugte DSN-Zeichenfolge:
mydb:server=12.23.34.45;port=8886

Initialisierung mit PDO-Objekt

Sie können Medoo auch aus einem vorhandenen initialisierten PDO-Objekt erstellen.
$pdo = new PDO('mysql:dbname=test;host=127.0.0.1', 'user', 'password');

$database = new Medoo([
	// Verwendet eine bereits initialisierte und verbundene PDO-Instanz erneut.
	'pdo' => $pdo,

	// Optional: Gibt Medoo vor, welches datenbankspezifische Verhalten verwendet werden soll.
	'type' => 'mysql'
]);

Für MySQL

Diese Option gilt nur für MySQL.
$database = new Medoo([
	// Optional: MySQL-Socket. Nicht zusammen mit server und port verwenden.
	'socket' => '/tmp/mysql.sock',
]);

Für MariaDB

MariaDB wird genauso behandelt wie MySQL. Der Datenbanktyp wird automatisch mysql zugeordnet.
$database = new Medoo([
	'type' => 'mariadb',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',
]);

Für MSSQL

Moderne MSSQL-Verbindungen verwenden normalerweise die Erweiterung pdo_sqlsrv sowohl unter Windows als auch unter Linux/UNIX. Medoo verwendet standardmäßig den pdo_sqlsrv-Treiber. Legen Sie für ältere Umgebungen, die pdo_dblib erfordern, den Treiber explizit während der Initialisierung fest. Weitere Informationen finden Sie unter https://github.com/Microsoft/msphpsql.
$database = new Medoo([
	'type' => 'mssql',
	'host' => 'localhost',
	'database' => 'name',
	'username' => 'your_username',
	'password' => 'your_password',

	// Optional: Anwendungsname.
	'appname' => 'test',

	// Nicht erforderlich.
	// Erzwingt die Verwendung des dblib-Treibers fuer MSSQL.
	// Standard: sqlsrv.
	'driver' => 'dblib'
]);
Medoo unterstützt auch MSSQL Verbindungsoptionen bei Verwendung des sqlsrv-Treibers. Einzelheiten finden Sie unter 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',

	// Optional: MSSQL-Verbindungsoptionen.
	'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'
]);

Für SQLite

Dateidatenbank
$database = new Medoo([
	'type' => 'sqlite',
	'database' => 'my/database/path/database.db'
]);
Speicherdatenbank
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ':memory:'
]);
Temporäre Datenbank
Die temporäre Datenbank wird gelöscht, wenn die Verbindung geschlossen wird.
$database = new Medoo([
	'type' => 'sqlite',
	'database' => ''
]);

// Oder lassen Sie die Option database ganz weg.
$database = new Medoo([
	'type' => 'sqlite'
]);

DSN-Zeichenfolge debuggen

Sie können die endgültige DSN-Zeichenfolge überprüfen, indem Sie info() aufrufen.
$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

Testmodus

Dieser Modus ist für Tests nützlich. Sie können generierte SQL bis $database->queryString über verschiedene Datenbanktypen hinweg überprüfen. Abfragen werden generiert, aber nicht ausgeführt.
$database = new Medoo([
	'testMode' => true
]);

// Legen Sie den Datenbanktyp fest.
$database->type = 'mysql';

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

echo $database->queryString;