使用PDO執行SELECT查詢的方法是有幾種的,它們的差異主要在於參數的存在、參數的類型和結果類型。我將為每種情況展示範例,以便可以選擇最適合的一個。
沒有參數的SELECT查詢
#如果查詢中沒有要使用的變數,我們可以使用傳統的query ()方法。
// 选择所有用户 $stmt = $pdo->query("SELECT * FROM users");
這將給我們一個$stmt對象,它可以用來取得實際的行。
取得一行
如果一個查詢只回傳一行,那麼你可以呼叫$stmt變數的fetch()方法:
//获取最后一个注册用户 $stmt = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1"); $user = $stmt->fetch();
注意,在PHP中,你可以呼叫已傳回物件的方法,如:
$user = $pdo->query("SELECT * FROM users ORDER BY id DESC LIMIT 1")->fetch();
查詢多行
有兩種方法可以取得查詢傳回的多行。最傳統的方法是在while迴圈中使用fetch()方法:
$stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch()) { echo $row['name']."<br />\n"; }
如果必須逐一處理行,可以建議使用此方法。例如,如果這樣的處理是唯一需要採取的操作,或者資料在使用之前需要以某種方式進行預處理。
但是取得將顯示在web頁面上的多行資料的最佳方法是呼叫名為fetchAll()方法。它會將查詢傳回的所有行放入PHP數組中,以後可以使用模板輸出資料(這被認為比在獲取過程中直接回顯資料好得多)。
程式碼如下:
$data = $pdo->query("SELECT * FROM users")->fetchAll(); foreach ($data as $row) { echo $row['name']."<br />\n"; }
帶參數的SELECT查詢
但是大多數時候,我們必須在查詢中使用一兩個變量,在在這種情況下,我們應該使用一個預處理語句(也稱為參數化查詢),首先用參數(或占位符標記)準備一個查詢,然後執行它,分別發送變數。
在PDO中,我們可以同時使用位置佔位符和命名佔位符。對於簡單的查詢,就我個人而言,我更喜歡位置佔位符,我發現它們不那麼冗長,但這完全是個人喜好的問題。
使用位置佔位符的SELECT查詢
//通过id选择特定的用户 $stmt = $pdo->prepare("SELECT * FROM users WHERE id=?"); $stmt->execute([$id]); $user = $stmt->fetch();
使用命名佔位符的SELECT查詢
// 通过id选择特定的用户 $stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id"); $stmt->execute(['id' => $id]); $user = $stmt->fetch();
本篇文章是關於使用PDO進行SELECT查詢的相關介紹,希望對需要的朋友有幫助!
以上是如何使用PDO進行SELECT查詢? (程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!