前回(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機能が実装できました。