我正在为学校项目编写基本的PHP登录系统,我目前正在尝试实施电子邮件激活。这是我的代码片段。
$query = "
SELECT
id,
username,
password,
salt,
email
useractivestatus
FROM users
WHERE
username = :username
";
// The parameter values
$parameters = array(
':username' => $_POST['username']
);
try
{
// Execute the query against the database
$stmt = $db->prepare($query);
$result = $stmt->execute($parameters);
}
catch(PDOException $err)
{
die("Failed to run query: " . $err->getMessage());
}
$row = $stmt->fetch();
if($row)
{
if($active != $row['useractivestatus'] );
{
die("Account has not been activated");
}
问题是使用var_dump $ row [' useractivestatus']我可以看到它总是从电子邮件列返回数据,导致查询始终返回false并触发die响应。我可以执行var_dump $ row [' 任何其他列']并返回正确的数据。为什么在查询useractivestatus列时它会返回电子邮件?
答案 0 :(得分:2)
您的查询中缺少逗号,因为此类电子邮件实际上是别名为useractivestatus,并且尝试从电子邮件列中进行选择将失败。
$query = "
SELECT
id,
username,
password,
salt,
email, -- this comma was missing
useractivestatus
FROM users
WHERE
username = :username