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;
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);
■
2020/06/30 18:14:08sql_execute 関数の仕様が分からない限り、誰も解答できないと思う。
パラメータクエリ(SQL)を投げて、何かを返却するんだろうなぁという想像しかできない。
■
>具現化がそもそもできない状態になっていると考えてもいいの
戻り値 = sql_execute(第一引数、第二引数)
この仕様が分からない限り、具現化とか関係ないと思うんだが・・。
戻り値もどういう形式なのか不明。
■
>>if($user_id > 0){ の前に、
>>print($user_id);
>>をいれて、どんな値が取得できてるか確認しては?
>これはやってみたのですが、値が出てきませんでした・・
・「ユーザーID、パスワード」が正しい時の値
・正しくない時の値
をどう想定してるかですよね?
想定してるものがないのは、もうプログラムではないと思う。
そうなんですね!
2020/07/02 20:32:15解決できないのは残念ですが、親身に相談に乗って頂きありがとうございました。