每次发生时都会让我失望:上次运行时效果很好的东西在我下次尝试运行它时不起作用,并且在脚本的任何地方都没有进行任何更改。特别是这个问题,因为自从我运行脚本以来已经有一段时间了,所以在包含的文件中进行了更改导致脚本无法正常工作,但是这一次,它在我昨天退出当天但是当我退回时工作了在今天,它并非一下子。因为这是有道理的,对吧?!
该脚本的功能是显示存储在MySQL数据库中的产品的数据以及搜索&存储的1600多种产品的分拣选项(未来将超过14,000种,因此需要立即修复/优化以防止将来出现问题)。它基本上没有完成,但显示表格和数据的主要功能昨天运作良好。此外,当我去检查错误时,我发现了一个error_log,其中有两个重复错误超过300MB:
mysqli_connect(): (HY000/1040): Too many connections in ...
mysqli_error() expects parameter 1 to be mysqli, boolean given in ...
之前我曾收到过这个错误并做了一些搜索,发现我从未关闭过任何关联。将mysqli_close($db)
添加到我打开连接的所有函数后,错误就消失了,一切都很好。现在,即使使用mysqli_close($db)
,它也会再次抛出错误,我在这里不知所措。最重要的是,我不明白为什么它会抛出此错误并不断重复,直到我停止页面重新加载而不是仅仅报告一个错误结束该过程。
function dispTable($var) {
require 'db-inc.php'; // << Database connection file
require 'dlc-forms.php'; // << Holds $search_bar and $view_per_page forms
// Define and validate variables
$currentpage=$order_by=$limit_view=$query=$column=$direction='';
getVars();
// Query
$sql="SELECT * FROM tbl" . $query . $order_by . $limit_view;
$res=mysqli_query($db, $sql);
$count=mysqli_num_rows($res);
// Display result count
if (($var == 'results') && (isset($_GET['q']))) {$res_count='Search returned ' . $count . ' results.';}
// Loop through result set
if ($var == 'table') {echo '
<table>
<thead>
<tr>
// Not sure about having 2 table headers, but I want
// the search bar to be right above the header row.
<th></th>
<th colspan="2">' . $search_bar . '</th>
</tr>
<tr>
<th>' . sortBtn('id') . '</th>
<th>' . sortBtn('title') . '</th>
<th>' . $view_per_page . '</th>
</tr>
</thead>
<tbody>';
while ($row=mysqli_fetch_assoc($res)) {
$id=$row['id'];
$title=$row['title'];
$link=$row['link'];
echo '<tr><td>' . $id . '</td><td>' . $title . '</td><td>' . $link . '</td></tr>';
} echo '
</tbody>
<tfoot>';
// Display pagination
if (($var == 'pages') && (isset($_GET['view']))) {pagination();}echo '
</tfoot>
</table>';
} mysqli_close($db);
}
function getVars() {
$x='0'; $r='0'; $row=array(); $range='3';
$num='item_num'; $name='item_name'; $btn='item_btn';
if (isset($_GET['search'])) {
return $search=checkData(trim($_GET['search']));
return $query=" WHERE title LIKE '%" . $search . "%'";
}
if (isset($_GET['col'])) {
return $col=checkData(trim($_GET['col']));
}
if (isset($_GET['sort'])) {
return $dir=checkData(trim(strtoupper($_GET['sort'])));
return $order_by=" ORDER BY " . $col . " " . $dir;
}
if ((isset($_GET['view'])) && (is_numeric($_GET['view']))) {
return $view=checkData(trim($_GET['view']));
return $limit_view=" LIMIT 0," . $view;
}
if ((isset($_GET['page'])) && (is_numeric($_GET['page']))) {
return $page=checkData(trim($_GET['page']));
}
}
function pagination() {
$dbase='thesof73_dlc';
require 'inc/db-inc.php';
getVars();
$tbl_total=mysqli_num_rows(mysqli_query($db, "SELECT * FROM dlc_tbl"));
$total=ceil($tbl_total/$view);
$prev=$currentpage - 1;
$next=$currentpage + 1;
if ($currentpage > $total) {$currentpage=$total;}
if ($currentpage < 1) {$currentpage=1;}
if ($currentpage > 1) {echo '
<li><a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?page=1">First</a></li>
<li><a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?page=' . $prev. '">Back</a></li>';
}
for ($x=($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
if (($x > 0) && ($x <= $total)) {
if ($x == $currentpage) {
echo '<li>' . $x . '</li>';
} else {
echo '<li><a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?page=' . $x . '">' . $x . '</a></li>';
}
}
}
if ($currentpage != $total) {echo '
<li><a href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?page=' . $next . '">Next</a></li>
<li><a class="material-icons" href="' . htmlspecialchars($_SERVER['PHP_SELF']) . '?page=' . $total . '">Last</a></li>';
} mysqli_close($db);
}
function sortBtn($var) {
if ($var == 'id') {$header='Item No.';}
elseif ($var == 'title') {$header='Product Name';}
getVars();
$asc='asc';
$desc='desc';
if ((isset($_GET['sort'])) && ($col == $var)) {
if ($dir == 'desc') {
return '<a id="sort" href="?q=' . $q . '&sort=' . $desc . '&col=' . $var . '">' . $header . ' <span class="fa fa-sort-' . $desc . '"></span></a>';
} elseif ($dir == 'asc') {
return '<a id="sort" href="?q=' . $q . '&sort=' . $asc . '&col=' . $var . '">' . $header . ' <span class="fa fa-sort-' . $asc . '"></span></a>';
}
} else {
return '<a id="sort" href="?q=' . $q . '&sort=' . $desc . '&col=' . $var . '">' . $header . ' <span class="fa fa-sort"></span></a>';
}
}
我知道看起来很麻烦,在我将代码片段放入函数之前更糟糕,但是我只提供参考代码,因为它昨天工作正常。提前谢谢!