PDO を使用して SELECT クエリを実行するにはいくつかの方法がありますが、それらの違いは主にパラメータ、パラメータの型、および結果の型の存在にあります。最適なものを選択できるように、ケースごとに例を示します。
#パラメータを使用しない SELECT クエリ
クエリで使用する変数がない場合は、従来の ## を使用できます。 #クエリ () メソッド。 // 选择所有用户
$stmt = $pdo->query("SELECT * FROM users");
クエリが 1 行のみを返す場合は、$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();
複数の行を取得するには 2 つの方法があります。クエリによって返される行。最も伝統的な方法は、while ループで fetch() メソッドを使用することです。
$stmt = $pdo->query("SELECT * FROM users"); while ($row = $stmt->fetch()) { echo $row['name']."<br />\n"; }
この方法は、行を 1 つずつ処理する必要がある場合にお勧めします。たとえば、実行する必要があるアクションがそのような処理だけである場合や、使用前にデータを何らかの方法で前処理する必要がある場合などです。
ただし、Web ページに表示される複数行のデータを取得する最良の方法は、
fetchAll()というメソッドを呼び出すことです。クエリによって返されたすべての行が PHP 配列に入れられ、後でテンプレートを使用してデータを出力するために使用できます (これは、フェッチ中にデータを直接エコーするよりもはるかに優れていると考えられます)。 コードは次のとおりです:
$data = $pdo->query("SELECT * FROM users")->fetchAll(); foreach ($data as $row) { echo $row['name']."<br />\n"; }
ただし、ほとんどの場合、1つまたは2つの変数を使用する必要があります。クエリ。この場合、
準備されたステートメント(パラメータ化されたクエリとも呼ばれる) を使用して、最初にパラメータ (またはプレースホルダー マーカー) を含むクエリを準備してから、それを実行してそれぞれ変数を送信する必要があります。 PDO では、位置プレースホルダーと名前付きプレースホルダーを同時に使用できます。単純なクエリの場合、個人的には位置プレースホルダーを好みます。冗長ではないと思いますが、これは完全に個人的な好みの問題です。
位置プレースホルダーを使用した SELECT クエリ//通过id选择特定的用户
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
$stmt->execute([$id]);
$user = $stmt->fetch();
// 通过id选择特定的用户
$stmt = $pdo->prepare("SELECT * FROM users WHERE id=:id");
$stmt->execute(['id' => $id]);
$user = $stmt->fetch();
以上がSELECT クエリに PDO を使用するにはどうすればよいですか? (コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。