Версия: v2.3.0
query
Выполняет пользовательский Raw SQL-запрос.
query($query, $map)
query [string]
Запрос SQL для выполнения.
map [array] (необязательно)
Значения для привязки в подготовленном запросе.
Возвращаемое значение
[PDOStatement] Экземпляр PDOStatement для выполненного запроса.
Medoo генерирует запросы с использованием синтаксиса SQL-92. При написании Raw SQL убедитесь, что значения корректно заключены в кавычки, и по возможности отдавайте предпочтение подготовленным запросам, чтобы снизить риск SQL-инъекции.
$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);
Синтаксис экранирования идентификаторов
Необработанные SQL-выражения поддерживают сокращённую запись для экранирования идентификаторов таблиц и столбцов, а также обработку префиксов таблиц. Используйте
<name>, чтобы пометить идентификатор, и Medoo преобразует его в корректно заключённое в кавычки имя таблицы или столбца с учётом настроенных префиксов.$data = $database->query("SELECT <email> FROM <account>")->fetchAll();
// Преобразованный SQL:
// SELECT "email" FROM "account"
// Если настроен префикс таблиц, запрос будет выглядеть так:
$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
Подготовленный запрос
query() также поддерживает подготовленные запросы. Medoo автоматически определяет типы параметров для привязанных входных значений.$data = $database->query( "SELECT * FROM <account> WHERE <user_name> = :user_name AND <age> = :age", [ ":user_name" => "John Smith", ":age" => 20 ] )->fetchAll(); print_r($data);