繁體中文
版本: v2.3.0

query

執行自訂原生 SQL 查詢,並支援綁定參數。

query($query, $map)
回傳值
[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);