teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

修正

2019/05/16 04:09

投稿

m.ts10806
m.ts10806

スコア80888

answer CHANGED
@@ -11,4 +11,34 @@
11
11
  $check_login_queryが1じゃなかったらどうなるんでしょう。何も出力しませんね。
12
12
  DB接続失敗したら?SELECT文が正しく機能しなかったら?など考慮の漏れが著しいです。
13
13
 
14
- 古い書籍なのか、初心者向けなのか分からないですが、初心者でもあまり参考にしてほしくない書籍・コードだと個人的には思います。
14
+ 古い書籍なのか、初心者向けなのか分からないですが、初心者でもあまり参考にしてほしくない書籍・コードだと個人的には思います。
15
+
16
+ 追記を受けて
17
+ ----
18
+
19
+ > 「変数の情報と適応する情報が入った列が何行あるのか?」を取得するという認識で正しいのでしょうか?
20
+
21
+ 「変数の情報と」の意味が分からないですが、おおよそ理解通りかと。
22
+ PHPマニュアルにある「結果の行数」とは「今回の場合はSELECT文を実行した結果の行数」が入っていると考えて良いです。
23
+ select文の条件を色々変えてみたうえでmysqli_num_rows()の結果をechoで出力してみてどうなるか確認してみると良いです。
24
+
25
+ > ここで二つめの質問なのですが、ここで取得した連想配列とは、下のようなものでしょうか?
26
+
27
+ データによるので取得結果をvar_dump()で確認してみては如何でしょうか。
28
+ 「想定通りの情報が入っているか」デバッグにもなるのでぜひ確認してみてください。
29
+
30
+ > $row['username']というのはどのような意味なのでしょうか?
31
+ 予想では、ユーザーネームに入っている配列の「username」キーの情報を変数に格納するという意味だと思うのですが・・・・
32
+
33
+ ここで「予想」してしまうとプログラミングの概念的におかしくなります。
34
+ プログラムは**書いたとおりにしか動かない**ので実態を確認すべきです。
35
+ 1つ前で結果をvar_dump()で確認すればこの疑問の理解が進み、解消できますね。
36
+
37
+ > 最後の質問なのですが、exit();は必要なのでしょうか?
38
+
39
+ はい。基本的には必要とは思います。
40
+ なぜなら[header](https://www.php.net/manual/ja/function.header.php)はあくまでレスポンスを定義するものであり、リダイレクトを宣言したからといって、その時点で画面遷移が起こるわけではないからです。
41
+ 試しにheader()の直後に何か処理(できればログ出力とか、セッションとかで画面遷移しても影響が確認できる処理)を記載してみると良いです。
42
+
43
+ exitを書くのは**これ以降は何も処理を行いません**という意味で「プログラムを終了させる」ためであると言っても良いです。
44
+ もちろん「お作法のように書いておこう」ということであり、exitを書かなくても済むようなプログラムが望ましいですけど、「必ず何もない前提」のようなプログラミングもよろしくありません。