Переключение всех функций mysql_ * на функции mysqli_ * приводит к ошибкам предупреждения

0

В настоящее время я переключил все функции 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 

В 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));

В 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";
    }
}

Пробовал много решений, но никто из них не работал для меня

Получение ошибок, как показано выше. Пожалуйста, помогите мне решить это.

Заранее спасибо.

  • 3
    Возможный дубликат Могу ли я слепо заменить все функции mysql_ на mysqli_?
  • 0
    Зачем использовать соединение БД в config.php используя 1 метод, а затем другое соединение в Mutex используя другой метод?
Показать ещё 3 комментария
Теги:
mysqli
php-7

2 ответа

0

Вместо того, чтобы дублировать (почти) соединение, вы можете попробовать подход, в котором вы передаете ссылку на соединение 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 );

?>
  • 0
    Хотя лучше, я не вижу, чем это отличается от кода, выполняемого OP; в конце концов соединение с базой данных генерируется точно так же.
  • 0
    true - более или менее то же самое, но сейчас только 1 соединение для отладки
Показать ещё 1 комментарий
0

Я думаю, что у вашей конфигурации БД есть некоторые проблемы.

Замените следующий код файла 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();
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню