1

ログに記録されたユーザー名を $_SESSION[user_name] 変数に既に保存しています。$_SESSION[user_id] 変数に user_id を追加で保存するにはどうすればよいですか。$stmt->fetch_array(MYSQLI_NUM); を使用しようとしました。しかし、運がありませんでした。

私はそのようなMySQLテーブルを持っています:

ログインする:

+---------------+-------------+-------------+-------------+
|    auto_id    |  username   |  password   |   user_id   |
+---------------+-------------+-------------+-------------+
|       0       |      a      |      b      |      1      |
+---------------+-------------+-------------+-------------+
|       1       |      c      |      d      |      2      |
+---------------+-------------+-------------+-------------+
|       2       |      e      |      f      |      3      |
+---------------+-------------+-------------+-------------+

私のphpログインバリデーターは次のとおりです。

<?php
session_start();
require_once('php/config.php');

if(isset($_POST['submit'])){
  $username = $_POST['user_name'];
  $password = $_POST['pwd'];
  $user_id_col = "3";

  $stmt = $con->prepare("SELECT * FROM tapp_login WHERE username = ? AND password = ? LIMIT 1");
  $stmt->bind_param('ss', $username, $password);
  $stmt->execute();
  $stmt->bind_result($username, $password);
  $stmt->store_result();
  if($stmt->num_rows == 1)  //To check if the row exists
  {
    while($stmt->fetch())
    {
  $_SESSION['LOGIN_STATUS']=true;
  $_SESSION['user_name'] = $username;
  $_SESSION['user_id'] = $user_id;
  echo 'true';
    }
  }
  else {
    echo 'false';
  }
  $stmt->close();
}
else{
}
$con->close();
?>
4

2 に答える 2

0

変数$user_idがコードで定義されていません。クエリにPDOを使用していると思いますが、これでうまくいくはずです

$row = $stmt->fetch(PDO::FETCH_ASSOC);
$_SESSION['LOGIN_STATUS']=true;
$_SESSION['user_name'] = $username;
$_SESSION['user_id'] = $row['user_id'];

期待される結果は 1 つだけなので、while ループは必要ありません。

不可解なPDO::FETCH_ASSOCことが気になる場合は、マニュアルを参照してください。

于 2013-11-14T19:00:22.623 に答える
0

$stmt->fetch() は値を返しますが、それを変数に格納することはありません。

使用する

while($data = $stmt->fetch()) { 
    $_SESSION['userid'] = $data['userid'];
}
于 2013-11-14T19:00:40.390 に答える