PDO::FETCH_ASSOC:について調べていたら、
PDO::FETCH_ASSOC
『PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返します。』
とでてきました。
いみがわかりません泣
php
1<?php require 'header.php'; ?> 2<?php require 'menu.php'; ?> 3<?php 4 5session_start (); 6// unset→指定した変数を破棄する 7unset ( $_SESSION ['customer'] ); 8$pdo = new PDO ( 'mysql:host=localhost;dbname=takahashi1;charset=utf8', 'takahashi', 'takahashi' ); 9$stmt = $pdo->prepare ( 'select * from customer where login=? and password=?' ); 10$stmt->execute ( array ( 11 $_POST ['login'], 12 $_POST ['password'] 13) ); 14 15// foreach ( $stmt->fetchAll() as $row ) { 16// 1行ずつfetchして$rowに設定して、$rowの中身をループの中で毎回処理して、 17// 中身が無くなったらfetchの返り値がfalseになってループを抜ける感じ 18// PDO::FETCH_ASSOC: は、結果セットに 返された際のカラム名で添字を付けた配列を返します。 19while ( $row = $stmt->fetch ( PDO::FETCH_ASSOC ) ) { 20 $_SESSION ['customer'] = array ( 21 // idというキーで$row['id']を入れる 22 'id' => $row ['id'], 23 'name' => $row ['name'], 24 'address' => $row ['address'], 25 'login' => $row ['login'], 26 'password' => $row ['password'] 27 ); 28} 29if (isset ( $_SESSION ['customer'] )) { 30 echo 'いらっしゃいませ、', $_SESSION ['customer'] ['name'], 'さん。'; 31} else { 32 echo 'ログイン名またはパスワードが違います。'; 33} 34?> 35<?php require 'footer.php'; ?>
var_dumpで$rowの中身を見てみました。
php
1while ( $row = $stmt->fetch ( PDO::FETCH_ASSOC ) ) { 2 var_dump($row); 3 // foreach ( $rows as $row ) { 4 // 連想配列$_SESSION['customer']にキーを指定して追加し、値として連想配列を代入 5 $_SESSION ['customer'] = array ( 6 // idというキーで$row['id']を入れる 7 'id' => $row ['id'], 8 'name' => $row ['name'], 9 'address' => $row ['address'], 10 'login' => $row ['login'], 11 'password' => $row ['password'] 12 ); 13} 14if (isset ( $_SESSION ['customer'] )) { 15 echo 'いらっしゃいませ、', $_SESSION ['customer'] ['name'], 'さん。'; 16} else { 17 echo 'ログイン名またはパスワードが違います。'; 18} 19var_dump($row);
php:$rowの中身
1array(5) { ["id"]=> string(2) "10" ["name"]=> string(15) "浜崎あゆみ" ["address"]=> string(32) "東京都渋谷区恵比寿2-7-2" ["login"]=> string(3) "ayu" ["password"]=> string(4) "1234" } いらっしゃいませ、浜崎あゆみさん。bool(false)
実際に、$rowに何が入っているかを表示して調べては。var_dump()を使えばできるでしょう。
ありがとうございます。var_dumpいれてみました^^
```php
while ( $row = $stmt->fetch ( PDO::FETCH_ASSOC ) ) {
var_dump($row);
// foreach ( $rows as $row ) {
// 連想配列$_SESSION['customer']にキーを指定して追加し、値として連想配列を代入
$_SESSION ['customer'] = array (
// idというキーで$row['id']を入れる
'id' => $row ['id'],
'name' => $row ['name'],
'address' => $row ['address'],
'login' => $row ['login'],
'password' => $row ['password']
);
}
if (isset ( $_SESSION ['customer'] )) {
echo 'いらっしゃいませ、', $_SESSION ['customer'] ['name'], 'さん。';
} else {
echo 'ログイン名またはパスワードが違います。';
}
var_dump($row);
```
■var_dumpの結果です↓
$rowの中身
array(5) { ["id"]=> string(2) "10" ["name"]=> string(15) "浜崎あゆみ" ["address"]=> string(32) "東京都渋谷区恵比寿2-7-2" ["login"]=> string(3) "ayu" ["password"]=> string(4) "1234" } いらっしゃいませ、浜崎あゆみさん。bool(false)
コメント欄ではなく質問に追記していただけますか。
かきました
