前提
背景
事象(やりたいこと)
- $_SESSION['cartinfo']内にあるデータを繰り返し処理したい
// 整数値3を返す $cartinfoCnt = count($_SESSION['cartinfo']); // 繰り返し処理 for($i=0; $i > $cartinfoCnt; $i++){ $sql_insert = "INSERT INTO orderinfo VALUES(NULL, '{$userName}', '{$_SESSION['cartinfo'][$i]['isbn']}', {$quantity}, '{$date}')"; $result_insert = executeQuery($sql_insert); }
困ったこと
繰り返し処理ができず、$_SESSION['cartinfo']内のデータが表示されない
試したこと
1処理がfor文に入っているか調べる
for($i=0; $i > $cartinfoCnt; $i++){ echo "aaa"; $sql_insert = "INSERT INTO orderinfo VALUES(NULL, '{$userName}', '{$_SESSION['cartinfo'][$i]['isbn']}', {$quantity}, '{$date}')"; $result_insert = executeQuery($sql_insert); }
- 上記の通りechoを入れてみて、挙動を確認
結果
"aaa"が出力されず、for文を通っていないことを確認
2. for文を通らない原因を探る
- for文を1文づつ確認し、通らない原因を探る
結果
原因は不等号が逆であったこと
以下のように修正したら無事for文を通った
↓修正前
for($i=0; $i > $cartinfoCnt; $i++){
↓修正後
for($i=0; $i < $cartinfoCnt; $i++){
所感
以下にエラー対応がすぐにできなかった要因を推測
※SQL文のエラーを検出しdieする処理を別ファイルで用意しており、そちらでエラーは発生していなかった。
よって本来はSQL文及びデータベースの調査は不要でした。
結論:今回の時間の浪費の真因は3.で、想定外の挙動に対して冷静な真因調査ができなかったことです。 エラー文が出ない想定外の挙動についてもエラー文が表示されたとき同様、冷静にデバックを実施することで、今回の事態は避けられたのではないか、と感じた。