回答編集履歴
4
コメントの返答を追加
answer
CHANGED
@@ -6,6 +6,19 @@
|
|
6
6
|
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
|
7
7
|
```こんな感じ?
|
8
8
|
|
9
|
+
コメントに答えます
|
10
|
+
---
|
11
|
+
マニュアルの[代入演算子](http://php.net/manual/ja/language.operators.assignment.php)のところにはこんな例題が載ってます。
|
12
|
+
```php
|
13
|
+
<?php
|
14
|
+
$a = ($b = 4) + 5; // $a は 9 に等しくなり、$b には 4 が代入されます
|
15
|
+
?>
|
16
|
+
```つまり、`($b = 4)`と書くとその部分は`4`だとみなされる訳です。
|
17
|
+
|
18
|
+
よって、`($row = $stmt->fetch(PDO::FETCH_ASSOC))`と書くと、`$stmt->fetch(PDO::FETCH_ASSOC)`の結果がwhileの評価式となります。そして$rowにも`$stmt->fetch(PDO::FETCH_ASSOC)`の結果が入るということになります。
|
19
|
+
|
20
|
+
そして、`fetch`が失敗すると、`false`を返しますので、ループが終了する訳です。
|
21
|
+
|
9
22
|
追記
|
10
23
|
---
|
11
24
|
よくよく読んでみると、ループである必要はないですね。
|
3
追記
answer
CHANGED
@@ -4,4 +4,21 @@
|
|
4
4
|
foreach ( $stmt->fetchAll () as $row ) {
|
5
5
|
↓↓↓
|
6
6
|
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
|
7
|
-
```こんな感じ?
|
7
|
+
```こんな感じ?
|
8
|
+
|
9
|
+
追記
|
10
|
+
---
|
11
|
+
よくよく読んでみると、ループである必要はないですね。
|
12
|
+
```php
|
13
|
+
$row = $stmt->fetch(PDO::FETCH_ASSOC);
|
14
|
+
if ($row) {
|
15
|
+
$_SESSION ['customer'] = [
|
16
|
+
'id' => $row ['id'],
|
17
|
+
'name' => $row ['name'],
|
18
|
+
'address' => $row ['address'],
|
19
|
+
'login' => $row ['login'],
|
20
|
+
'password' => $row ['password']
|
21
|
+
];
|
22
|
+
}
|
23
|
+
```
|
24
|
+
とこんな感じですね。まあ、同じ`login`と`password`の人が複数いる場合、最初に`fetch`した人になりますが。
|
2
fetchのパラメーターを追加
answer
CHANGED
@@ -3,5 +3,5 @@
|
|
3
3
|
```php
|
4
4
|
foreach ( $stmt->fetchAll () as $row ) {
|
5
5
|
↓↓↓
|
6
|
-
while ( $row = $stmt->fetch() ) {
|
6
|
+
while ( $row = $stmt->fetch(PDO::FETCH_ASSOC) ) {
|
7
7
|
```こんな感じ?
|
1
変更
answer
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
なんか、ループの中がツッコミどころがありすぎますが、
|
2
|
+
表題の回答だけだとすると、
|
1
3
|
```php
|
2
4
|
foreach ( $stmt->fetchAll () as $row ) {
|
3
5
|
↓↓↓
|
4
6
|
while ( $row = $stmt->fetch() ) {
|
5
|
-
```
|
7
|
+
```こんな感じ?
|