0
0

More than 3 years have passed since last update.

PHPでDBに接続、CRUDを利用して掲示板を作る② Readについて

Last updated at Posted at 2020-08-19

前回(https://qiita.com/progterry/items/2f82b82a5118c16010a0)はPHPでDBに接続、CRUDのCreateの機能を実装するところまでお話をしました。
今回はRead機能について書いていこうと思います。

そもそもReadとは?

Readとは、掲示板の機能で必須とされるCRUDの中の1つです。
CRUDはそれぞれ、
Create
Read
Update
Delete
の頭文字を取っています。それぞれの単語の具体的な機能に関しては前回の記事を参照。

実際のコード

<?php 
$dsn = 'mysql:dbname=test_bbs2; host=localhost';
$username= 'root';
$password= 'root';
try{
    $dbh = new PDO($dsn, $username, $password);
    echo "接続成功";
    echo "<br>";
} catch(PDOException $e){
    echo "失敗:" . $e->getMessage() . "\n";
    exit();
}

//SELECT文を変数に格納
$sql = "SELECT * FROM contacts";

//SQLステートメントを実行し、結果を変数に格納
$stmt = $dbh->query($sql);

//foreach文で配列の中身を一行ずつ出力
foreach ($stmt as $row){
    echo "名前:" . $row['submit_name'] . ':' . "発言:" . $row['submit_content'];
    echo '<br>';
}
?>
<a href="index.php">トップへ戻る</a>

こまかく見ていきましょう。

DB接続までは前回記事と同様のため省略します。
毎回DB接続を行うんだ、ということさえ覚えておいたらいいと思います。

次に、

//SELECT文を変数に格納
$sql = "SELECT * FROM contacts";

この部分は変数sqlに、データベースのcontactsテーブルから取り出した内容をいれています。
SELECT * FROM contacts
この部分はPHPではなく、SQLの書き方になっているので注意です。
アスタリスク* マークは、「すべてを」という意味になっています。
このコードは、contactsテーブルから、制限なくすべてのデータを取り出すという意味です。

次に、

//SQLステートメントを実行し、結果を変数に格納
$stmt = $dbh->query($sql);

この部分をみます。

ここでは右辺の処理を、stmtに代入しています。
CRUD処理を探しているとやたらとこの$stmtが出てきます。stmtはおそらくstatementの略で、よく使われる変数名みたいです。

$dbh->query($sql);

では、queryで、$sqlの中のSQLを実行し、オブジェクトとして返します。
参考(https://www.php.net/manual/ja/pdo.query.php)

言い換えると、このqueryを行うことでsqlが目的の形になるということです。

最後に、

//foreach文で配列の中身を一行ずつ出力
foreach ($stmt as $row){

この部分で、出力します。$stmtを$rowにしていますが、$rowの部分の変数名は何でもいいです。その後の部分とつじつまが合えば。

以上、このような形でRead機能が実装できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0