gpt4 book ai didi

php - 调用非对象上的成员函数(包括database.php)

转载 作者:行者123 更新时间:2023-11-29 20:36:02 25 4
gpt4 key购买 nike

我正在开发一个新网站,并且我为新网站重写了一些以前工作的代码以重新创建登录系统。不幸的是,重写的版本不起作用,所以让我解释一下发生了什么。

我有“index.php”,它包含每个页面上使用的“titlemenu.php”。我打算在此标题菜单(顶部栏)中运行登录框,以便人们可以登录,无论他们自己的页面是什么,并且当他们成功登录时,它会刷新他们当前所在的页面,以便他们登录。

到目前为止,宾果游戏 - 有效。他们已登录并查看仅限成员(member)的页面。然而,标题栏却是另一回事。尽管已登录,但它仍然显示“登录”和“注册”。立即,我认为这是该特定 php 文件的问题,因此我仅登录该 php,绕过了 index.php 文件。当我尝试仅在该空白页面上登录时,我得到: fatal error :第18行调用非成员函数prepare()我知道这通常意味着您的变量未声明或未运行,因此我决定对其进行故障排除。我对使用的每个变量执行了 var_dump,它返回了有效结果。我检查了index.php,它没有错误并且运行良好,并且显示用户已登录。“欢迎回来,RhapidFyre!”索引上是这样显示的,但登录框显示我尚未登录。

loginheader.php

    <?include "641a/database.php";?><div id="login"><?
$mydbid = $_SESSION['user'];
$myquery = "SELECT * FROM logins WHERE dbid = $mydbid";
$myrow = mysqli_fetch_assoc($myquery);
$myname = $myrow['nickname'];

if($_GET['do'] == "logout") {
unset($_SESSION['user']);
?><script type="text/javascript">
window.location.replace("index.php");
</script><?
}
if($_GET['do'] == 'login') {
$query = 'SELECT * FROM logins WHERE username = :username';
$query_params = array(':username' => $_POST['username']);

var_dump($query);
var_dump($query_params);
try
{
$stmt = $db->prepare($query); //LINE 18
$result = $stmt->execute($query_params);
}
catch(PDOException $ex)
{
?><script type="text/javascript">
window.location.replace("redirect.php?error=username");
</script><?
}(Further irrelevant code follows)

数据库.php

<?  session_start();
$dbusername = "********";
$dbpassword = "********";
$dbhost = "localhost";
$dbname = "********";
$link = mysqli_connect($dbhost, $dbusername, $dbpassword, $dbname);

// PDO Initialization
try {
$db = new PDO("mysql:host={$dbhost};dbname={$dbname};charset=utf8", $dbusername, $dbpassword);
}

// If connection fails, die.
catch(PDOException $ex){
die("Failed to connect to the MySQL Server!" . $ex->getMessage());
}

index.php 片段

<html>
<head>

<title>My Website Template</title>
<link rel="stylesheet" type="text/css" href="base.css"/>
</head>
<body>
<div id="header">
<?include "pages/titles.php";?>
<?include "pages/loginheader.php";?>
</div>

最佳答案

问题源于在尝试调试时使用两种连接类型。将其全部更改为 MySQLi,它运行良好,但产生了新问题。正如我的编程老师常说的:“耶!新错误!”

关于php - 调用非对象上的成员函数(包括database.php),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38807866/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com