将SQL表与$ _SESSION ['用户']进行比较并打印当前用户信息

时间:2017-12-21 11:26:02

标签: php sqlite

首先,我对编码非常陌生。我有一个带表的sql-database:

CREATE TABLE "users" (
    `id`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
    `name`  VARCHAR NOT NULL,
    `username`      VARCHAR NOT NULL UNIQUE,
    `email` VARCHAR NOT NULL,
    `password`      VARCHAR NOT NULL,
    `biography`     VARCHAR NOT NULL,
    `img`   VARCHAR
);

我希望将users['id']$_SESSION['user']进行比较,并在个人资料页面中打印出当前用户的所有信息。截至目前我的代码是:

$query = 'SELECT * FROM users WHERE id';
$statement = $pdo->query($query);

if (!$statement) {
die(var_dump($pdo->errorInfo()));
}


$rows = $statement->fetchAll(PDO::FETCH_ASSOC);

foreach ($rows as $row) {
}

我缺少的是我将users['id']$_SESSION['user']进行比较的地方,而且我不确定如何专门为此编码。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

这是你可以做到的:

$sth = $dbh->prepare('SELECT * FROM users WHERE id = :id');
$sth->bindParam(':id', $_SESSION['user']);
$sth->execute();

然后迭代结果。

答案 1 :(得分:0)

有很多事情似乎已经解决了。

  1. 您的SQL查询似乎不完整。

    SELECT * FROM users WHERE id='$user_id'

  2. 您没有初始化PDO对象。

    $pdo = new PDO('mysql:host=localhost;dbname=your_db;charset=utf8mb4', 'db_username', 'db_password');

  3. 完整的代码段:

    <?php 
        session_start();
    
        $user_id=$_SESSION['user_id'];
        $pdo = new PDO('mysql:host=localhost;dbname=db_name;charset=utf8mb4', 'db_user', 'db_pass');
    
        $user_id=1;
        $query = "SELECT * FROM engineers WHERE id='$user_id'";
        $statement = $pdo->query($query);
    
        if (!$statement) {
        die(var_dump($pdo->errorInfo()));
        }
    
        $rows = $statement->fetchAll(PDO::FETCH_ASSOC);
    
        foreach ($rows as $row) {
            echo $row['name'];
            echo $row['username'];
            echo $row['biography'];
        }
    ?>
    

    另一方面,使用$_SESSION['user_id']=$id设置会话。