Проблемы с подключением PHP к mySQL

Хорошо, я полностью сбит с толку.

Я настраиваю объектно-ориентированный сайт. У меня есть класс, который определяет все параметры моей базы данных, как показано ниже:

$db->host= "localhost";
$db->name= "mydatabase";
$db->user= "user";
$db->pw = "password";

Класс создается правильно, и значения отображаются на страницах, которые появляются после загрузки этого класса.

НО, когда я пытаюсь подключиться к эта база данных из другого класса, она не подключается. Вот как я подключаюсь:

$dbconn = mysql_connect($db->host, $db->user, $db->pw);
mysql_select_db($db->name, $dbconn);

Все работает нормально, если я беру переменные user, pw, name и жесткий код в правильные значения, но если на любую из них ссылаются с помощью конструкции db, соединение не происходит. Опять же, конструкция db отлично отображается на других страницах, и я вижу, что значения переменных отображаются правильно. Однако переменная хоста $ db-> всегда работает.

Вот как я создаю класс db:

class database {
    var $host;
    var $name;
    var $user;
    var $pw;

    function __construct($host = "localhost", $name = "mydatabase", $user = "user", $pw = "password"){
        $this->host =   $host;
        $this->name =   $name;
        $this->user =   $user;
        $this->pw =     $pw;
    }
}

, а потом я, конечно, сделаю

 $db = new database();

Заранее спасибо за любую помощь!

1
задан Gary 28 August 2010 в 07:30
поделиться

2 ответа

  1. Не используйте PHP4
  2. Почему не Вы просто используете PDO
  3. Какой смысл хранить пароль или имя пользователя в качестве свойства объекта?
  4. Вероятно, проблема в $db переменной области видимости

Как исправить все что?

class MyClass {
    protected $db;

    public function __construct(PDO $db) {
        $this->db = $db;
    }

    public function doSth() {
        $this->db->query('..');
    }
}

$db = new PDO('mysql:dbname=mydatabase;host=localhost', 'user', 'password');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$obj = new MyClass($db);
$obj->doSth();
2
ответ дан 2 September 2019 в 21:45
поделиться

Я думаю, что вы не передаете параметры при создании объекта для инициализации конструктора класса базы данных.

попробуйте использовать

$db=new database("localhost","dbname","user","password");

а затем создайте класс как

class database {
   var $host;
   var $name;
   var $user;
   var $pw;

       function __construct($host , $name , $user , $pw ){
        $this->host =   $host;
        $this->name =   $name;
        $this->user =   $user;
        $this->pw =     $pw;
    }

Также включите этот класс как файл, если написан отдельно а для подключения теперь можно написать

$conn=mysql_connect($db->host,$db->user,$db->pw);
mysql_select_db($db->name,$conn);

Надеюсь помогло :)

0
ответ дан 2 September 2019 в 21:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: