เวอร์ชัน: v2.3.0
query
รันคิวรี SQL แบบกำหนดเอง
query($query, $map)
query [string]
คิวรี SQL ที่ต้องการรัน
map [array] (ไม่บังคับ)
ค่าพารามิเตอร์อินพุตสำหรับคำสั่งที่เตรียมไว้
ค่าที่ส่งกลับ
[PDOStatement] อินสแตนซ์ PDOStatement ของคิวรีที่รันไป
Medoo สร้างคิวรีตามไวยากรณ์ SQL-92 เมื่อเขียนคิวรี SQL เอง ควรตรวจสอบว่าค่าต่าง ๆ ถูกใส่เครื่องหมายอัญประกาศอย่างถูกต้อง และควรใช้คำสั่งที่เตรียมไว้เมื่อทำได้ เพื่อลดความเสี่ยงจากการโจมตีแบบ SQL injection
$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);