バージョン: v2.3.0
query
任意の生の SQL クエリを実行します。
query($query, $map)
query [string]
実行する SQL クエリ。
map [array] (省略可)
プリペアドステートメントに渡すバインド値。
戻り値
[PDOStatement] 実行されたクエリの PDOStatement インスタンス。
Medoo は SQL-92 構文でクエリを生成します。生の 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);