なんでfetchAllメソッド使うんですか?
SBCreativeのPHP超入門になんどもfetchAllで取得してforeachでまわしてる文が出てくるんですけど未だに理解してません。
fetchAll()→該当する全てのデータを配列として返す
という意味みたいなんですが、
該当するデータなんて一件ぐらいしかないのになんで
わざわざ全てのデータを配列として返すfetchAllを使うんですか?
なんども
foreach ( $stmt->fetchAll () as $row ) {
がでてきて意味が解りません。
php
1foreach ( $stmt->fetchAll () as $row ) { 2 $_SESSION ['customer'] = array ( 3 // idというキーで$row['id']を入れる 4 'id' => $row ['id'], 5 'name' => $row ['name'], 6 'address' => $row ['address'], 7 'login' => $row ['login'], 8 'password' => $row ['password'] 9 ); 10}
php
1<?php require 'menu.php'; ?> 2<?php 3session_start (); 4// unset→指定した変数を破棄する 5unset ( $_SESSION ['customer'] ); 6$pdo = new PDO ( 'mysql:host=localhost;dbname=takahashi1;charset=utf8', 'takahashi', 'takahashi' ); 7$stmt = $pdo->prepare ( 'select * from customer where login=? and password=?' ); 8// var_dump($stmt); 9$stmt->execute ( array ( 10 $_POST ['login'], 11 $_POST ['password'] 12) ); 13 14// foreachは配列とオブジェクトをループして使うための構文 15// 配列ではないが使いやすくするために特別にforeachの反復処理で使えるように作られている 16// $rowという変数に入れる 17// $rows = $stmt->fetchAll (); 18// var_dump($rows) 19foreach ( $stmt->fetchAll () as $row ) { 20// foreach ( $rows as $row ) { 21 // 連想配列$_SESSION['customer']にキーを指定して追加し、値として連想配列を代入 22 $_SESSION ['customer'] = array ( 23 // idというキーで$row['id']を入れる 24 'id' => $row ['id'], 25 'name' => $row ['name'], 26 'address' => $row ['address'], 27 'login' => $row ['login'], 28 'password' => $row ['password'] 29 ); 30} 31if (isset ( $_SESSION ['customer'] )) { 32 echo 'いらっしゃいませ、', $_SESSION ['customer'] ['name'], 'さん。'; 33} else { 34 echo 'ログイン名またはパスワードが違います。'; 35} 36?>
なんでここではfetchじゃなくてfetchAllなのでしょうか。
fetchとfetchAllの使い分けもできません。
fetch→一行づつ取得
fetchAll→全データを配列に変換。全ての結果行を含む配列を返す
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/15 02:47
2017/03/15 03:03