質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

1716閲覧

ブログの記事取得 複数のSQL文

creative_09

総合スコア80

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2018/08/17 13:20

ブログの記事をデータベースから取得する場合の、
・全件取得と、
・GETで渡されたユーザーIDを元にそのユーザーIDのブログのみを表示する方法について

このような場合にはいったいどういう処理の流れになるのでしょうか?

GETに渡ってきた値があれば該当のユーザーのブログ一覧を表示
そうでなければ一覧表示といった形でそれぞれSQL分を作っています。

ですが、
GETがあった場合には以下

$statement = $dbh->prepare($sql); $statement->bindValue(':id', $id, PDO::PARAM_STR); $statement->execute(); コード

しかも、prepareである必要もありません

GETがなかった場合は
bindValueの部分が必要ありません

$statement = $dbh->prepare($sql); $statement->execute(); コード

こういった場合に、SELECT文だけを条件によって差し替えるということができず
条件によってまるごとこのSQL文4行(select文も含めて)を2個つくり差し替えるのが普通なんでしょうか?

もっといいやり方、
通常ブログなどでのやり方などがあれば教えてください

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

php

1function getArticles($id = null) { 2 $dbh = new PDO(); // 環境により調整 3 $sql = "SELECT * FROM `articles` "; 4 $sql .= "WHERE 1 "; 5 $params = []; 6 if (is_null($id)) { 7 $sql .= "AND `id` = :id"; 8 $params[':id'] = $id; 9 } 10 $stmt = $dbh->prepare($sql); 11 $stmt->execute($params); 12 return $stmt->fetchAll(); 13}

こんな感じの関数1つでOK。

投稿2018/08/17 13:28

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

creative_09

2018/08/17 14:23

ありがとうございます。 関数を作ってそちらで処理するんですね この場合、bindValueがないですが、 $stmt->execute($id); は $stmt->bindValue(':id', $id, PDO::PARAM_STR); と同じだと思っても良いのでしょうか? また、"WHERE 1 "のあとにORDER BYなどが両方に付く場合、どのような形になるのでしょうか? 知っておきたいです。よろしくおねがいします
退会済みユーザー

退会済みユーザー

2018/08/17 14:49 編集

PDO::execute() の関数の使い方をマニュアルで調べてください。 質問の意味はわかるけど、このコードからなぜそれくらいの改変もできないのだろうと思います。 聞かなくてもできなきゃ、まずいんじゃないかな。 書いて動かすという、学習ではなく、実験を繰り返してください。 その結果、何か聞く必要がある場合に、質問してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問