首先,我对编码非常陌生。我有一个带表的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']
进行比较的地方,而且我不确定如何专门为此编码。
有什么建议吗?
答案 0 :(得分:0)
这是你可以做到的:
$sth = $dbh->prepare('SELECT * FROM users WHERE id = :id');
$sth->bindParam(':id', $_SESSION['user']);
$sth->execute();
然后迭代结果。
答案 1 :(得分:0)
有很多事情似乎已经解决了。
您的SQL查询似乎不完整。
SELECT * FROM users WHERE id='$user_id'
您没有初始化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
设置会话。