我有一个简单的数据库表“accounts”,包含3个条目:'user','pass'和'ID'。 ID是一个整数。
我正在尝试从表中检索ID并将其存储到$ _SESSION ['id']中,但我没有运气。
以下是代码:
session_start();
// Checks to see if the input account is valid
$result = mysqli_query($con,"SELECT * FROM accounts
WHERE user='$_POST[user]'
AND pass='$_POST[pass]'");
//Check to see if account exists
if(!mysqli_fetch_array($result))
{
$_SESSION['loggedin'] = false;
}
else
{
$_SESSION['loggedin'] = true;
$_SESSION['user'] = $_POST['user'];
$id = mysqli_fetch_array($result);
$_SESSION['id'] = $id['ID'];
echo $_SESSION['id'];
}
//header('Location: index1.php/');
?>
echo $ _SESSION ['id']没有任何内容。我试图回复$ id ['ID']本身,它也不起作用。
在我的index1.php页面上,我设法使用相同的代码检索信息,除了$ result不使用select语句的WHERE和AND子句。
答案 0 :(得分:1)
您似乎要两次获取数据:一次在if
语句中,一次在else
中。考虑使用这个:
//Check to see if account exists
if($id!=mysqli_fetch_array($result))
{
$_SESSION['loggedin'] = false;
}
else
{
$_SESSION['loggedin'] = true;
$_SESSION['user'] = $_POST['user'];
$_SESSION['id'] = $id['ID'];
echo $_SESSION['id'];
}
或者这个:
//Check to see if account exists
if(!$result)
{
$_SESSION['loggedin'] = false;
}
else
{
$_SESSION['loggedin'] = true;
$_SESSION['user'] = $_POST['user'];
$id = mysqli_fetch_array($result);
$_SESSION['id'] = $id['ID'];
echo $_SESSION['id'];
}
答案 1 :(得分:1)
你实际上是在获取前两行(每次调用mysqli_fetch_array()
都会得到一行结果),这可能不是你想要的。只需获取一次并重用结果:
// ...
//Check to see if account exists
$row = mysqli_fetch_array($result);
if(!$row)
{
$_SESSION['loggedin'] = false;
}
else
{
$_SESSION['loggedin'] = true;
$_SESSION['user'] = $_POST['user'];
$_SESSION['id'] = $row['ID'];
echo $_SESSION['id'];
}
// ...
正如评论中所提到的,您的代码对SQL注入是开放的。阅读准备好的语句以防止这种情况或手动清理变量(不建议这样做。)。