Нет базы данных, выбранной php в oops

#php #mysql #oop

#php #mysql #ооп

Вопрос:

Я новичок в php. Пожалуйста, проверьте следующий код. Я не получаю ошибку «База данных не выбрана» для приведенного ниже кода. Я написал код в oops. Любая помощь будет оценена. Пожалуйста, помогите. Я получаю сообщение об ошибке в этой строке

 die("invalid".mysql_error());' 
 

в методе runquery ($query).

Dbconfig.php

 <?php
class Dbconfig
{
     private $connection;

    public function __constructor($hostname,$username,$password,$database){

        $this->connection=mysql_connect($hostname,$username,$password);
        if(!$this->connection){
            die(mysql_error());
        }else{
            if(!mysql_select_db($database,$this->connection)){
                die(mysql_error());
            }

        }

    }

    function runQuery($query){
        $result= mysql_query($query);
        if($result){
            while($row= mysql_fetch_array($result)){
                $resultset[]= $row;
            }
            if(!empty($resultset)){
                return $resultset;
            }
        } else {
            die("invalid".mysql_error());

        }
    }
}

?>
 

Config.php

 <?php
require("path to dbconfig.php");
$base="http://localhost/slvbilling/";
$hostname='localhost';
$username='root';
$password='';
$database='slv';
$connect = new Dbconfig($hostname,$username,$password,$database);
?>
 

Комментарии:

1. mysql_ * обесценивается в новой версии и удаляется в версии 7.0. Пожалуйста, загляните в mysqli_ * или PDO API.

2. Может быть, это require("path to dbconfig.php"); проблема?

3. да, пожалуйста, используйте mysqli_* . вы допустили ошибку в define constructor. вместо этого должно быть public function __construct($hostname,$username,$password,$database) public function __constructor($hostname,$username,$password,$database)

4. конструктор будет определен как __construct не как __constructor

Ответ №1:

Попробуйте использовать приведенный ниже код в Dbconfig.php файл

  <?php
    class Dbconfig
    {
         private $connection;

        public function __construct($hostname,$username,$password,$database){
        $this->connection=mysql_connect($hostname,$username,$password);
        if(!$this->connection){
            die(mysql_error());
        }else{
            if(!mysql_select_db($database,$this->connection)){
                die(mysql_error());
            }

        }

    }

    function runQuery($query){
        $result= mysql_query($query);
        if($result){
            while($row= mysql_fetch_array($result)){
                $resultset[]= $row;
            }
            if(!empty($resultset)){
                return $resultset;
            }
        } else {
            die("invalid".mysql_error());

        }
    }
}

?>
 

это касается только конструктора, попробуйте приведенный выше код, это может помочь!

Ответ №2:

Помещается or die(mysql_error()) с помощью функции mysql вместо размещения избыточных условий.

Пожалуйста, попробуйте использовать приведенный ниже код..

 <?php
class Dbconfig
{
     private $connection;

    public function __construct($hostname,$username,$password,$database){

        $this->connection=mysql_connect($hostname,$username,$password)or die(mysql_error());
        mysql_select_db($database,$this->connection))or die(mysql_error());
    }

    function runQuery($query){
        $result= mysql_query($query)or die("invalid".mysql_error());
        if($result){
            while($row= mysql_fetch_array($result)){
                $resultset[]= $row;
            }
            if(!empty($resultset)){
                return $resultset;
            }
        }
    }
}
?>
 

Ответ №3:

Попробуйте передать соединение с mysql_query:

  function runQuery($query){
     $result= mysql_query($query, $this->connection);
 .....
 

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

Если вы предоставите код, вызывающий runQuery, вам будет легче получить правильный ответ.