phpでログイン機能を作りたいのですが、IF文で真の時の動作が出てこず、困っているので教えて頂けないでしょうか?

11行目の
>$ary_param_array[] = array($email, $password);
まではうまく機能し、POSTもされているのですが、

13~15行目の
>$context_tmp = sql_execute($ary_sql, $ary_param_array);
>$user_id = $context_tmp['data'][0]['data'][0]['id'];
がうまく機能せず、IF文にて、条件が真の時の動作が出てきません。

やりたいこととしては、POSTにて入力されたメールアドレスとパスワードをDBで照合し、ログインできるようにしたいです。
回答して頂けると非常に助かります。

※DBの接続は完了しています。
―――――――――
require_once( '*****' );

$email = $_POST['email'];
$password = $_POST['password'];


$ary_sql = array();
$ary_param_array = array();

$ary_sql[] = "SELECT * FROM TEST_USER WHERE email = ? AND password = ?";
$ary_param_array[] = array($email, $password);

$context_tmp = sql_execute($ary_sql, $ary_param_array);

$user_id = $context_tmp['data'][0]['data'][0]['id'];

if($user_id > 0){
//該当1人以上。成功
$_SESSION['id'] = $user_id;
echo "ID" . $_SESSION['id'] . "でログインします。";
}else{(省略)
}
exit;

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了:2020/07/02 20:32:27

ベストアンサー

id:kaoato No.1

回答回数193ベストアンサー獲得回数76

ポイント100pt

C言語系の言語経験があって、PHPの文字列の扱いに慣れていないのでは?



---------
$ary_sql[] = "SELECT * FROM TEST_USER WHERE email = ? AND password = ?";


$ary_sql = "SELECT * FROM TEST_USER WHERE email = ? AND password = ?";

と書き換えてみては?

----------
または、

$context_tmp = sql_execute($ary_sql, $ary_param_array);



$context_tmp = sql_execute("SELECT * FROM TEST_USER WHERE email = ? AND password = ?", $ary_param_array);

他4件のコメントを見る
id:kaoato


sql_execute 関数の仕様が分からない限り、誰も解答できないと思う。

パラメータクエリ(SQL)を投げて、何かを返却するんだろうなぁという想像しかできない。


>具現化がそもそもできない状態になっていると考えてもいいの


戻り値 = sql_execute(第一引数、第二引数)

この仕様が分からない限り、具現化とか関係ないと思うんだが・・。
戻り値もどういう形式なのか不明。




>>if($user_id > 0){ の前に、
>>print($user_id);
>>をいれて、どんな値が取得できてるか確認しては?

>これはやってみたのですが、値が出てきませんでした・・


・「ユーザーID、パスワード」が正しい時の値
・正しくない時の値

をどう想定してるかですよね?

想定してるものがないのは、もうプログラムではないと思う。

2020/06/30 18:14:08
id:ffss

そうなんですね!
解決できないのは残念ですが、親身に相談に乗って頂きありがとうございました。

2020/07/02 20:32:15

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません