Version: v2.3.0
query
Eine benutzerdefinierte Raw-SQL-Abfrage ausführen.
query($query, $map)
query [string]
Die auszuführende SQL-Abfrage.
map [array] (fakultativ)
Die Bindewerte für das Prepared Statement.
Rückgabewert
[PDOStatement] Die PDOStatement-Instanz der ausgeführten Abfrage.
Medoo erzeugt Abfragen in SQL-92-Syntax. Wenn Sie Raw SQL schreiben, achten Sie darauf, Werte korrekt zu quoten, und bevorzugen Sie nach Möglichkeit Prepared Statements, um das Risiko von SQL-Injection zu verringern.
$database->query("CREATE TABLE account_storage (
c1 INT STORAGE DISK,
c2 INT STORAGE MEMORY
) ENGINE NDB;");
$data = $database->query("SELECT email FROM account")->fetchAll();
print_r($data);
Syntax für Identifier-Quoting
Rohe SQL-Ausdrücke unterstützen eine Kurzschreibweise für das Quoting von Tabellen- und Spaltenbezeichnern sowie die Verarbeitung von Tabellenpräfixen. Verwenden Sie
<name>, um Bezeichner zu markieren. Medoo ersetzt sie dann durch korrekt quotierte Tabellen- oder Spaltennamen einschließlich konfigurierter Präfixe.$data = $database->query("SELECT <email> FROM <account>")->fetchAll();
// Umgewandeltes SQL:
// SELECT "email" FROM "account"
// Wenn ein Tabellenpräfix konfiguriert ist, sieht die Abfrage so aus:
$database = new Medoo([
// ...
"prefix" => "WP_"
]);
$data = $database->query("SELECT <account.email>,<account.nickname>
FROM <account>
WHERE <id> != 100
")->fetchAll();
SELECT "WP_account"."email", "WP_account"."nickname" FROM "WP_account" WHERE "id" != 100
Vorbereitete Anweisung
query() unterstützt auch vorbereitete Anweisungen. Medoo erkennt die Parametertypen für gebundene Eingabewerte automatisch.$data = $database->query( "SELECT * FROM <account> WHERE <user_name> = :user_name AND <age> = :age", [ ":user_name" => "John Smith", ":age" => 20 ] )->fetchAll(); print_r($data);