简体   繁体   English

将所有mysql_ *函数切换为mysqli_ *函数会导致警告错误

[英]Switching all the mysql_* functions to mysqli_* functions results in warning errors

I'm currently switching all the mysql_* functions to mysqli_* functions and i am getting the following errors . 我目前将所有mysql_ *函数切换为mysqli_ *函数,并且遇到以下错误。

 PHP Warning: mysqli_connect(): (HY000/1040): Too many connections in

 PHP Warning: mysqli_query() expects parameter 1 to be mysqli, boolean given in 

 PHP Warning: mysqli_error() expects parameter 1 to be mysqli, boolean 

In config.php : 在config.php中:

            $dbuser = "xxx";
            $dbpass = "xxx";
            $dbhost = "xxxx";
            $dbname = "xxxxxx";
            $connection = mysqli_connect($dbhost, $dbuser, $dbpass) or die("could not connect to mysql");
            if($connection){
                echo "\n Database connected ....\n\n";
            }
            mysqli_select_db($connection,$dbname) or die(mysqli_error($connection));

In other.php 在other.php中

require_once 'Lib/config.php';

 class Mutex {

    protected $connection;
    public function __construct()
    {
    global $dbuser,$dbpass,$dbname,$dbhost; // globally declaring the config variables
    $this->connection = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);   
    if (mysqli_connect_errno())
    {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      //you need to exit the script, if there is an error
        exit();
    }
    }



    public function Prog($pack = null) {

        if(isset($pack) && $pack != "") {
            $sql_qry    = "SELECT id from xxxx WHERE package like '" . addslashes($pack) . "'";
            showSqlQuery($sql_qry);
            $result     = mysqli_query($this->connection,$sql_qry)or die(mysqli_error($this->connection));
            if($result && mysqli_num_rows($result)>0) {
                $row    = mysqli_fetch_assoc($result);
                if(!empty($row)) {
                    return "Exists";
                }
            }
            return "NotExists";
        }
        return "InvalidProcess";
    }
}

Tried many solutions, but none of them worked for me 尝试了许多解决方案,但没有一个对我有用

Getting errors as shown above. 如上所示出现错误。 Please help me to solve this.. 请帮我解决这个问题。

Thanks in advance. 提前致谢。

Rather than duplicating ( nearly ) the connection you could try the approach where you pass a reference to the db connection as a parameter to the Mutex constructor 您可以尝试以下方法,而不是复制(几乎)连接:将对db连接的引用作为参数传递给Mutex构造函数

<?php
    /* lib/config.php */
    $dbhost =   'localhost';
    $dbuser =   'root'; 
    $dbpass =   'xxx'; 
    $dbname =   'xxx';
    $db =   new mysqli( $dbhost, $dbuser, $dbpass, $dbname );

?>

<?php

    include 'lib/config.php';

    class Mutex{
        private $connection;

        public function __construct( $dbo=object ){
            $this->connection=$dbo;
        }

        public function Prog($pack = null) {
            $result='InvalidProcess';
            if( !empty( $pack ) ) {

                $sql='select `id` from `xxxx` where `package` like ?';
                $stmt=$this->connection->prepare( $sql );
                if( $stmt ){

                    $var = '%'.$pack.'%';
                    $stmt->bind_param('s', $var );

                    $result=$stmt->execute();
                    if( $result && $stmt->num_rows > 0  ){

                        $stmt->store_result();
                        $stmt->bind_result( $id );

                        while( $stmt->fetch() ){/* do stuff perhaps */
                            echo $id;
                        }

                        $stmt->free_result();
                        $stmt->close();
                        $result='Exists';
                    }
                }
            }
            return $result;
        }



    $pack='banana';

    $mutex=new Mutex( $db );
    $mutex->Prog( $pack );

?>

I think your DB configuration has some issue. 我认为您的数据库配置有一些问题。

Replace the following code of config.php file to bellow. 将下面的config.php文件代码替换为以下内容。

$dbuser = "xxx";
$dbpass = "xxx";
$dbhost = "xxxx";
$dbname = "xxxxxx";
$connection = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
// Check connection
if (mysqli_connect_errno())
{
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM