php初心者で現在、学習しているものです。
現在、従業員の管理画面を作成しており、従業の一覧表示画面を作成中です。
その画面の中で以下のコードが出てきましたが、コードの意味の理解が曖昧ですので、
教えていただければ幸いです。
以下のようなコードを書いております。
<?php error_reporting(E_ALL & ~E_STRICT); ini_set('display_errors', '1'); try { //データベースへの接続 $dsn='mysql:dbname=shop;host=localhost;charset=utf8'; $user='root'; $password=''; $dbh=new PDO($dbn,$user,$password); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);//エラーハンドリング設定 //SQL文を使って、レコードを追加。 $sql='SELECT code,name FROM mst_staff WHERE 1'; $stmt=$dbh->prepare($sql); $stmt->execute($data); //データベースから切断 $dbh=null; print'スタッフ一覧<br/>'; print'<form action="staff_edit.php" method="post">'; while(true) { $rec=$stmt->fetch(PDO::FETCH_ASSOC); if($rec==false){ break; } print'<input type="radio" name="staffcode" value="'.$rec['code'].'">'; print $rec['name']; print'<br/'; } print'<input type="submit" value="修正">'; print'</form>'; } catch(Exception $e) { print 'ただいま障害により大変ご迷惑をお掛けしております。'; exit(); } ?>
①
以下のwhile文の理解を確認させてください。私の理解では、whileはループを表すコードで、
trueは存在を表す表現と理解しています。
従って、ここでは、「$recに何のデータもなければ、抜けなさい。ただ、データがある限りは、codeとnameを出力し続けなさい。」と言っていると理解しておりますが、この理解でよろしいでしょうか?
while(true) { }
②while文の中に、「$rec=$stmt->fetch(PDO::FETCH_ASSOC);」というコードがあります。
このコードの理解は、「$stmtを表示するために、データベースに情報を取りに行き、$recという箱に入れなさい」という理解でよろしいでしょうか?
③tryから始まる構文の直後にも、データベースに接続するコード
「dbh=new PDO($dbn,$user,$password);」を書いています。while文の中で「$rec=$stmt->fetch(PDO::FETCH_ASSOC);」を使って、再度、データベースに接続する意味は何でしょうか?それとも、
これらのコードはそれぞれ別の意味をもっているのでしょうか?
上記の理解が非常に曖昧です。以上、ご助言何卒よろしくお願いいたします。