gpt4 book ai didi

javascript - 为什么我收到 "Fatal error: Call to a member function query() on a non-object"错误?

转载 作者:行者123 更新时间:2023-11-28 11:12:00 25 4
gpt4 key购买 nike

这是我的私有(private)服务器realmeye的代码http://www.thenoxusproject.org/realmeye/index.php我不断收到此错误,我不知道如何修复它,请帮忙?

Fatal error: Call to a member function query() on a non-object in /home/noxus/public_html/realmeye/index.php on line 112

================================================== ===============

index.php代码如下

<?php 

require_once('template/config.php');
// database info
define('HOST','MY VPS IP');
define('DB','rotmg');
define('USER','root');
define('PASS','DB PASSWORD');
function connect_db()
{
$pdo = new PDO('mysql:host='.HOST.';dbname='.DB,USER,PASS);
return $db;
}
?>
<html lang="en">

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, target-densityDpi=device-dpi">
<title>Player List</title>
<link rel="shortcut icon" href="img/favicon.ico">
<meta name="msapplication-config" content="none">
<link rel="canonical" href="/top-players-by-fame">
<meta name="keywords" content="realm of the mad god, rotmg, statistics, stats,top players,by fame">
<meta name="description" content="Top Players in Realm of the Mad God by fame 1-101.">
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/bootstrap-theme.min.css" rel="stylesheet">
<link href="css/typeahead.js-bootstrap.css" rel="stylesheet">
<link href="css/tablesorter.css" rel="stylesheet">
<link href="css/realmeye.css" rel="stylesheet">
<style id="swaggy">
#plscenterme {
text-align: center;
}
</style>
</head>
<body>
<?php require_once('template/navbar.php'); ?>
<div class="container">
<div class="row">
<div class="col-md-12">
<div id="plscenterme">
<h1><?= SERVER_NAME . ' - Player list' ?></h1>
<p>Noxus Player List</p>
</div>
</div>
<nav class="text-center">
<ul class="pagination">
<li <?= $type == 'all' ? "class='active'" : '' ?>><a href="index.php?type=all">All</a></li>

</ul>
</nav>
<div class="table-responsive">
<style type="text/css">
#c th:nth-child(1), #c td:nth-child(1), #c th:nth-child(4), #c td:nth-child(4), #c th:nth-child(5), #c td:nth-child(5), #c th:nth-child(6), #c td:nth-child(6), #c th:nth-child(7), #c td:nth-child(7), #c th:nth-child(8), #c td:nth-child(8), #c th:nth-child(9), #c td:nth-child(9) {
text-align: right
}
</style>
<table id="c" class="table table-striped tablesorter">
<thead>
<tr>
<th class="header"></th>
<th class="header">Name</th>
<th class="header">Guild</th>
<th class="header">Fame</th>
<th class="header">Exp</th>
<th class="header">
<abbr title="Rank">R</abbr>
</th>
<th class="header">
<abbr title="Chars">C</abbr>
</th>
<th class="header">
<abbr title="Avg. Fame / Char">AF/C</abbr>
</th>
<th class="header">
<abbr title="Avg. Exp / Char">AE/C</abbr>
</th>
<th class="header">Last seen</th>
<th class="header">
<abbr title="Server">Srv.</abbr>
</th>
</tr>
</thead>
<tbody>
<?php
$count = 1;
$accounts = $type == 'all' ? get_accounts() : get_accounts();
while ($row = $accounts->fetch_assoc())
{ ?>
<tr>
<!-- Number -->
<td><?=$count . '.' ?></td>
<td>
<div class="star-container">
<!-- Name -->
<a href="player.php?player=<?=$row['name'] ?>"><?=$row['name'] ?></a>
<!-- Rank/Stars -->
<div class="star star-white"></div>
</div>
</td>
<!-- Guild -->
<td><?php
$currentGuildID = $row1['guild'];
$guildName = "";
$table = "SELECT * FROM 'guilds' WHERE 'id'=$currentGuildID";
$query = $pdo->query($table) or die ('An error occurred.');
while ($row1 = $query->fetch(PDO::FETCH_ASSOC))
{
$guildName = $row1['name'];
}
if ($currentGuildID == 0)
echo "None";
echo $guildName;
?></td>
<!-- Fame/FameHistory-->
<td><?php
$currentFame = "";
$accId = get_id_from_name($row['name'])->fetch_assoc()['id'];
$table = "SELECT * FROM `characters` WHERE `accId`=$accId and dead=0";
$query = $pdo->query($table) or die('An error occurred.');
while ($row2 = $query->fetch(PDO::FETCH_ASSOC))
{
$currentFame = $currentFame + $row2['fame'];
}

if ($currentFame == 0 or $currentFame == null) {
echo "0";
}else {
echo $currentFame;}
?></td>
<!-- EXP -->
<td><?php
$currentEXP = "";
$accId = get_id_from_name($row['name'])->fetch_assoc()['id'];
$table = "SELECT * FROM `characters` WHERE `accId`=$accId and dead=0";
$query = $pdo->query($table) or die('An error occurred.');
while ($row3 = $query->fetch(PDO::FETCH_ASSOC))
{
$currentEXP = $currentEXP + $row3['exp'];
}
if ($currentEXP == 0 or $currentEXP == null) {
echo "0";
}else {
echo $currentEXP;}
?></td>
<!-- Rank -->
<td><?php
$currentRank = "";
$accId = get_id_from_name($row['name']) -> fetch_assoc()['id'];
$table = "SELECT `rank` FROM `accounts` WHERE `id`=$accId";
$query = $pdo->query($table) or die('An error occurred.');
while ($row4 = $query->fetch(PDO::FETCH_ASSOC))
{
$currentRank += $row4['rank'];
}
echo $currentRank;
?></td>
<!-- Characters -->
<td><?php
$charamount = 0;
$accId = get_id_from_name($row['name'])->fetch_assoc()['id'];
$table = "select * from characters where accId=$accId and dead=0";
$query = $pdo->query($table) or die('An error occurred.');
while ($row5 = $query->fetch(PDO::FETCH_ASSOC))
{
$charamount++;
}
echo $charamount;
?></td>
<!-- Average Fame/Char -->
<td><?php
$allFameAddedUp = 0;
$charCount = 0;
$accId = get_id_from_name($row['name'])->fetch_assoc()['id'];
$table = "select * from characters where accId=$accId and dead=0";
$query = $pdo->query($table) or die('An error occurred.');
while ($row6 = $query->fetch(PDO::FETCH_ASSOC))
{
$allFameAddedUp += $row6['fame'];
$charCount++;
}
if ($allFameAddedUp == 0) {
echo "0";
}else {
echo $allFameAddedUp / $charCount;
}
?></td>
<!-- Average EXP/Char -->
<td><?php
$allEXPAddedUp = 0;
$charCount1 = 0;
$accId = get_id_from_name($row['name'])->fetch_assoc()['id'];
$table = "select * from characters where accId=$accId and dead=0";
$query = $pdo->query($table) or die('An error occurred.');
while ($row7 = $query->fetch(PDO::FETCH_ASSOC))
{
$allEXPAddedUp += $row7['exp'];
$charCount1++;
}
if ($allEXPAddedUp == 0) {
echo "0";
}else {
echo $allEXPAddedUp / $charCount1;
}
?></td>
<!-- Last seen-->
<td>
<abbr title="<?= SERVER_NAME ?>">
FSOD
</abbr>
</td>
</tr>
<?php $count++; } ?>
</tbody>
</table>
</div>
</div>
</div>
<script src="js/jquery-1.11.2.min.js"></script>
<script src="js/typeahead.bundle.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.timeago.js"></script>
<script src="js/jquery.timeago.en-short.js"></script>
<script src="js/definition.js"></script>
<script src="js/jquery.tablesorter.js"></script>
<script src="js/realmeye.js"></script>
<script type="text/javascript">
$(function () {
initializeSearch("a");
}
);
initializeClickHandlerWithAction("b", {
"type": "POST",
"url": "\/logout",
"data": {}
}
);
makeSortable("c", {
0: {
"sorter": "digit"
}
,
1: {
"sorter": "text"
}
,
2: {
"sorter": "text"
}
,
3: {
"sorter": "digit"
}
,
4: {
"sorter": "digit"
}
,
5: {
"sorter": "digit"
}
,
6: {
"sorter": "digit"
}
,
7: {
"sorter": "digit"
}
,
8: {
"sorter": "digit"
}
,
9: {
"sorter": "text"
}
,
10: {
"sorter": "text"
}
}
);
renderNumeric("c", 1);
renderNumeric("c", 4);
renderNumeric("c", 5);
renderNumeric("c", 6);
renderNumeric("c", 7);
renderNumeric("c", 8);
renderNumeric("c", 9);
</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(["_setAccount", "UA-36039145-1"]);
_gaq.push(["_setSiteSpeedSampleRate", 10]);
_gaq.push(["_setSampleRate", "80"]);
_gaq.push(["_gat._anonymizeIp"]);
_gaq.push(["_setCustomVar", 1, "ssl", /^https/.test(window.location.href) ? "yes" : "no"]);
_gaq.push(["_trackPageview"]);

(function () {
var ga = document.createElement("script");
ga.type = "text/javascript";
ga.async = true;
ga.src = ("https:" == document.location.protocol ? "https://ssl" : "http://www") + ".google-analytics.com/ga.js";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>

最佳答案

如果您注意到,1) 您的脚本中没有 connect_db() 且 2) 您的函数正在创建 $pdo 但返回 $db 因此,即使您使用 connect_db() 它也不会返回任何内容:

function connect_db()
{
$pdo = new PDO('mysql:host='.HOST.';dbname='.DB,USER,PASS);
// You need to return $pdo not $db
return $pdo;
}
<小时/>

编辑:因为您可能会也可能不会在整个页面中使用连接,因此您可能需要在顶部创建函数并将其输入到您正在使用的任何函数中,特别是这部分: $accounts = $type == '全部' ? get_accounts() : get_accounts();

这个三元数没有任何意义,顺便说一下,您正在以任何一种方式将函数分配给 truefalse :

// You are saying if 'all', use 'get_accounts()' but if not 'all' use it 'get_accounts()' as well...
$accounts = $type == 'all' ? get_accounts() : get_accounts();

要修复,只需执行以下操作:

$con = connect_db();
$accounts = get_accounts($con);

我注意到您在页面下方使用 $pdo,因此您可能需要更改为 $pdo:

$pdo = connect_db();
$accounts = get_accounts($pdo);

关于javascript - 为什么我收到 "Fatal error: Call to a member function query() on a non-object"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33173845/

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