使用PHP和会话获取PostgreSQL查询错误

时间:2018-04-02 15:32:25

标签: php sql postgresql

我遇到的问题与使用会话变量的查询有关。

在用户登录期间我分配了一个会话变量

$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显示查询失败。我不知道为什么会这样。

3 个答案:

答案 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'];