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

问题描述 投票:0回答:2

首先,我对编码很新。我有一个带表的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']进行比较,我不确定如何专门为此编码。有什么建议?

php sqlite
2个回答
0
投票

这是你如何做到的:

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

然后迭代结果。


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');

完整的代码段:

<?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来设置会话。

© www.soinside.com 2019 - 2024. All rights reserved.