【问题标题】:Getting PostgreSQL Query Error with PHP and Sessions使用 PHP 和会话获取 PostgreSQL 查询错误
【发布时间】:2018-04-02 15:32:25
【问题描述】:

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

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

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

【问题讨论】:

  • 检查真正的错误可能吗?有一些方法可供您使用。
  • @FunkFortyNiner 有趣的是,如果我用say id = 2替换该行,它确实有效,所以错误必须与会话变量有关
  • 下面的答案解决了吗?
  • 如果用户 id 在您的数据库中是 int,则您不需要单个刻度('')。这也会导致查询失败。你可以试试这样的“.$userid”。
  • 你现在有 3 个答案

标签: php sql postgresql


【解决方案1】:

如果用户 id 在您的数据库中是 int,则您不需要单个刻度('')。这也会导致查询失败。你可以试试这样的“.$userid”。

$result = pg_query($db, "SELECT * FROM users WHERE id = ".$userid."") or die("error on query");

【讨论】:

    【解决方案2】:

    但是 count($result) 不会给你行数。尝试使用

    if(pg_num_rows($result) == 1){
     $session['user_id']= $row['id'];
    }else{
    echo pg_num_rows($result);
    }
    

    【讨论】:

      【解决方案3】:

      在下面 $_SESSION['user_id'] = $row['id'];在同一个 if 语句中,回显 id 以查看您得到的响应

      echo $_SESSION['user_id'];
      

      【讨论】:

      • 这不是答案,应该是评论
      • 我无法评论,我的声誉不够高。
      • 我猜还不错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-21
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      相关资源
      最近更新 更多