phpでツイッターのクローンをUdemyの教材を見ながら作成しています。
教材でどうしても意味の分からない部分があったので、教えていただきたいです。
PHP
1$check_database_query = mysqli($con, "SELECT * FROM users WHERE email = '$email' AND password = '$password'"); 2$check_login_query = mysqli_num_rows($check_database_query); 3
SQLのテーブルに入っているユーザー情報を取り出して、変数に入れて、行数がいくつかを変数に格納していました。
ここで一つ目の質問なのですが、mysqli_num_rowsは「結果の行数を取得する」という意味とマニュアルに書いてあったのですが、これは「変数の情報と適応する情報が入った列が何行あるのか?」を取得するという認識で正しいのでしょうか?
その後、
php
1 2 if($check_login_query == 1) { 3 $row = mysqli_fetch_array($check_database_query); 4 $username = $row['username']; 5 6 $_SESSION['username'] = $username; 7 header("Location: index.php"); 8 exit(); 9 10 }
まず、If文で、先ほど得た行数が1、つまり、正常に情報がテーブルに入っているかどうかを確認しています。
次に、mysqli_fetch_array関数を使って、結果の行を連想配列で取得しています。
ここで二つめの質問なのですが、ここで取得した連想配列とは、下のようなものでしょうか?
php
1 2$row = array( 3 "email" => "test@gmail.com", 4 "password" => "**********" 5 ); 6
その後、
php
1$username = $row['username'];
と続くのですが、$row['username']というのはどのような意味なのでしょうか?
予想では、ユーザーネームに入っている配列の「username」キーの情報を変数に格納するという意味だと思うのですが・・・・
最後の質問なのですが、exit();は必要なのでしょうか?
わかる方いらっしゃいましたら、教えて下さい!!
わからない部分は $check_login_query からです
php
1<?php 2 if (isset($_POST['login_button'])) { 3 $email = filter_var($_POST['log_email'], FILTER_SANITIZE_EMAIL); //emailをサニタイズ(特別な状態を打ち消す) 4 5 $_SESSION['log_email'] = $email; //session変数にemailを保存 6 $password = md5($_POST['log_password']); //パスワードを取得 7 8 $check_database_query = mysqli($con, "SELECT * FROM users WHERE email = '$email' AND password = '$password'"); 9 $check_login_query = mysqli_num_rows($check_database_query); 10 11 if($check_login_query == 1) { 12 $row = mysqli_fetch_array($check_database_query); 13 $username = $row['username']; 14 15 $_SESSION['username'] = $username; 16 header("Location: index.php"); 17 exit(); 18 19 } 20 21 } 22?>
var_dump($row);した結果
php
1array(24) { [0]=> string(1) "3" ["id"]=> string(1) "3" [1]=> string(8) "Chandler" ["first_name"]=> string(8) "Chandler" [2]=> string(4) "Bing" ["last_name"]=> string(4) "Bing" [3]=> string(13) "chandler_bing" ["username"]=> string(13) "chandler_bing" [4]=> string(18) "Chandler@gmail.com" ["email"]=> string(18) "Chandler@gmail.com" [5]=> string(32) "e04857f0b448a8d84176da365bca0da6" ["password"]=> string(32) "e04857f0b448a8d84176da365bca0da6" [6]=> string(10) "2019-05-15" ["signup_date"]=> string(10) "2019-05-15" [7]=> string(54) "assets/images/profile_pics/defaults/head_deep_blue.png" ["profile_pic"]=> string(54) "assets/images/profile_pics/defaults/head_deep_blue.png" [8]=> string(1) "0" ["num_posts"]=> string(1) "0" [9]=> string(1) "0" ["num_likes"]=> string(1) "0" [10]=> string(2) "no" ["user_closed"]=> string(2) "no" [11]=> string(1) "," ["friend_array"]=> string(1) "," }
回答4件
あなたの回答
tips
プレビュー