我试图弄清楚为什么我可以连接到数据库,但无法访问其中的数据。
这是我的配置:
//config.php
<?php
define("HOST", "MYSERVERNAMEISHERE");
define("DATABASE", "users");
?>
我的用户登录,并传递他们的信息进行检查:
//login.php
<?php
if ($_POST) {
if ($_POST["user"] && $_POST["password"]) {
include_once "config.php";
define("USER", $_POST["user"]);
define("PASSWORD", $_POST["password"]);
$link = new mysqli(HOST, USER, PASSWORD, DATABASE);
if ($link) {
$link->close();
if ($_SESSION) {
session_destroy();
}
session_start();
$_SESSION["user"] = $_POST["user"];
$_SESSION["password"] = $_POST["password"];
}
}
}
if ($_SESSION) {
header('Location: profile.php');
}
else {
header('Location: login.html');
}
?>
当他们通过时,他们会看到他们的个人资料页面。
//profile.php
<?php
session_start();
if (!$_SESSION["user"] || !$_SESSION["password"]) {
session_destroy();
header("Location: login.html");
}
else {
include_once "config.php";
}
$link = new mysqli(HOST, USER, PASSWORD, DATABASE) or die("Unable to connect to database");
$result = $link->query("SHOW TABLES") or die("Unable to show tables");
...
ADDITIONAL PHP AND HTML CODE AFTER THIS POINT
问题是当我尝试查询mysqli链接时进程终止。 (我得到Unable to show tables
)现在,SHOW TABLES
只是调试的补充;当我找出问题时,我实际上会有有用的mysqli查询。
请帮我确定我的错误所在。如果您发现错字或参考链接,抱歉浪费您的时间。我现在几个小时都在研究和调试。
非常感谢。
PS:如果你对我应该做的改变有一些好的建议,我也很感激。这是我第一次让用户登录。答案 0 :(得分:1)
您在profile.php中的查询失败,因为未定义USER
和PASSWORD
。当该人登录时,它们在login.php中定义。重定向到profile.php时,USER
和PASSWORD
没有值,因为它们不在config.php中。
在profile.php中,更改
$link = new mysqli(HOST, USER, PASSWORD, DATABASE) or die("Unable to connect to database");
到
$link = new mysqli(HOST, $_SESSION["user"], $_SESSION["password"], DATABASE) or die("Unable to connect to database");