重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

mysqlより、id, name, passwprdを取得後、修正画面に表示をしようと思うのですが、、
$rlrec["id"],$rlrec["name"],$rlrec["password"]がnotice エラーとなります。。

print_r($rlrec)では、表示されているので、、

配列に、値は、格納されていると思うのですが、何が、ダメなのでしょうか、、??

コードは、下記に載せておきます。。

ご教授いただけたら有り難いです。。

$sql='SELECT id, name, password FROM password3 WHERE 1';
$stmt=$dbh->prepare($sql);
$stmt->execute();

$dbh=null;
print 'ID・パスワード一覧<br/>';

while(true){
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$rlrec[]=$rec;

if($rec==false){
break;

}
}
print_r($rlrec);
?>
<table border="8">
<tr bgcolor="#AAAAGG">
<th>ID</th>
<th>NAME</th>
<th>PASSWORD</th>
<tr><td><?php print$rlrec["id"]; ?></td>
<td><?php print $rlrec["name"]; ?></td>
<td><?php print $rlrec["password"]; ?></td></tr>
</table>

A 回答 (6件)

データを全部配列として保持したいならwhileはいらない


$rlrec=$stmt->fetchAll(PDO::FETCH_ASSOC);
とするだけ。あとは

<table>
<tr>
<th>ID</th>
<th>NAME</th>
<th>PASSWORD</th>
</tr>
<?php
foreach($rlrec as $rec){
print <<<eof
<tr>
<td>{$rec["id"]}</td>
<td>{$rec["name"]}</td>
<td>{$rec["password"]}</td>
</tr>
eof;
}
?>
</table>
    • good
    • 0
この回答へのお礼

yambejp 様
回答いただきありがとうございました。。
一発で解決しました。。
本当にありがとうございました!!

お礼日時:2018/08/20 17:50

> for($i=0; $i==true; $i++){



「$i==true」って?

for($i=0; $i<count($rlrec); $i++) {

としてください。

http://php.net/manual/ja/control-structures.fore …

foreach を使った方が良いと思うけど・・・
    • good
    • 0

<tr>


<td><?php print $rlrec[0]["id"]; ?></td>
<td><?php print $rlrec[0]["name"]; ?></td>
<td><?php print $rlrec[0]["password"]; ?></td>
</tr>

としてますよね、たぶん・・・
$rlrecには複数のデータが入っているので
ここをループ処理する必要があります。
    • good
    • 0
この回答へのお礼

closed16 様
返信ありがとうございます。。
ループ処理でやってみたのですが、、
上手くいきません。。
情けないですが、ちょっと手詰まりちゅう感じです。。
ちなみに自分が書いたコードです。。
<table border="8">
<tr bgcolor="#AAAAGG">
<th>ID</th>
<th>NAME</th>
<th>PASSWORD</th>
</tr>
<?php
for($i=0; $i==true; $i++){
print "<tr><td>{$rlrec[$i]['id']}</td>";
print "<td>{$rlrec[$i]['name']}</td>";
print "<td>{$rlrec[$i]['password']}</td></tr>";
}

?>
</table>

お礼日時:2018/08/20 07:23

password3テーブルのデータを全部$rlrec[]に入れてるんですね。



とりあえず print $rlrec["id"] を print $rlrec[0]["id"] にすればnoticeはでないと思う。
    • good
    • 0
この回答へのお礼

closed16 様
ご回答ありがとうございます。。
確かに、noticeは解消されましたが、、
それでは、一行しか表示されません。。。
修正画面に、レコードから取り出した、id, name, passwordを一覧で表示したいのですが、、
どうすればいいのでしょうか??

お礼日時:2018/08/19 19:04

while でレコード数+1回、配列に書き込んでいるので


最後のデータが不正ってことではないかな。
    • good
    • 0
この回答へのお礼

よろずやkinchan 様
ご回答ありがとうございます。。

お礼日時:2018/08/19 19:04

$rlrec[]=$rec;



$rlrec=$rec;

でどうでしょう?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。。
以前は、$rlrec=$rec;コチラでコードを書いてましたが、、
それでは、全く何も表示されませんでした。。
それで、[]をつけて、配列に値は、格納はされるようになったと思うのですが、、、
$rlrec[]=$rec;では、一応、var_dump($rlrec)で、中身の表示は出来てます。。
Array ( [0] => Array ( [id] => 1 [name] =>このように[id]、[name]も値があるのに、print $rlrec["id"]
print $["name"]にすると、noticeエラーになってしまうので困ってます。。

お礼日時:2018/08/18 21:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す