我遇到的问题与使用会话变量的查询有关。
在用户登录期间我分配了一个会话变量
$myemail = $_POST['email'];
$mypassword = $_POST['password'];
$sql = "SELECT * FROM users WHERE email = '$myemail'";
$result = pg_query($db,$sql);
$row = pg_fetch_assoc($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if(count($result) == 1) {
$_SESSION['user_id'] = $row['id'];
}
重点是$_SESSION['user_id'] = $row['id']
接下来,一旦用户登录,我想在我的数据库中找到用户的信息,所以我搜索了这样的用户
$userid = $_SESSION['user_id'];
$result = pg_query($db, "SELECT * FROM users WHERE id = '$userid'") or die("error on query");
$user_info = pg_fetch_assoc($result);
但我继续让error on query
显示查询失败。我不知道为什么会这样。
答案 0 :(得分:1)
如果您的数据库中的用户ID为int,则您不需要单个刻度('')。这也会导致查询失败。你可以试试这样的东西"。$ userid。"
$result = pg_query($db, "SELECT * FROM users WHERE id = ".$userid."") or die("error on query");
答案 1 :(得分:0)
但是计数($ result)不会给你行数。尝试使用
if(pg_num_rows($result) == 1){
$session['user_id']= $row['id'];
}else{
echo pg_num_rows($result);
}
答案 2 :(得分:0)
$ _SESSION ['user_id'] = $ row ['id'];在同一个if语句中,回显id以查看你得到的响应
echo $_SESSION['user_id'];