MySQL - mysqli_connect()返回“连接太多”错误,昨天运行正常并且没有进行任何更改?

时间:2017-03-26 06:33:16

标签: php mysql

每次发生时都会让我失望:上次运行时效果很好的东西在我下次尝试运行它时不起作用,并且在脚本的任何地方都没有进行任何更改。特别是这个问题,因为自从我运行脚本以来已经有一段时间了,所以在包含的文件中进行了更改导致脚本无法正常工作,但是这一次,它在我昨天退出当天但是当我退回时工作了在今天,它并非一下子。因为这是有道理的,对吧?!

该脚本的功能是显示存储在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 . '&nbsp;<span class="fa fa-sort-' . $desc . '"></span></a>';
        } elseif ($dir == 'asc') {
            return '<a id="sort" href="?q=' . $q . '&sort=' . $asc . '&col=' . $var . '">' . $header . '&nbsp;<span class="fa fa-sort-' . $asc . '"></span></a>';
        }
    } else {
        return '<a id="sort" href="?q=' . $q . '&sort=' . $desc . '&col=' . $var . '">' . $header . '&nbsp;<span class="fa fa-sort"></span></a>';
    }
}

我知道看起来很麻烦,在我将代码片段放入函数之前更糟糕,但是我只提供参考代码,因为它昨天工作正常。提前谢谢!

0 个答案:

没有答案