PHP ООП MySQL подключиться - PullRequest
3 голосов
/ 18 марта 2011

Хорошо, так что я полный новичок в ООП в php, и я подумал, что попробую что-то легкое для начала, однако это не работает, как я ожидал

<?php 

class mySQL{

  var $host;
  var $username;
  var $password;
  var $database;

  public function connect($set_host, $set_username, $set_password, $set_database){
    $this->host = $set_host;
    $this->username = $set_username;
    $this->password = $set_password;
    $this->database = $set_database;

    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$database")or die("cannot select DB");

  }

}

$connect = new mySQL();
$connect -> connect('localhost', 'user', 'pass', 'database1');

$settings_query = mysql_query("SELECT * FROM settings");
$settings = mysql_fetch_array($settings_query);

echo $settings['title']; 

?>

Все, что я получаюна моей странице "не удается подключиться".

Ответы [ 6 ]

6 голосов
/ 18 марта 2011

В вашем методе соединения вы пытаетесь использовать следующие переменные:

  • $host
  • $username
  • $password
  • $database

, который будет локальным для вашего connect() метода.
Но эти переменные не существуют.


Вместо этого, если вы хотите использовать свойства $host, $username и$password, которые определены в вашем классе, вы должны использовать $this для доступа к ним :

  • $this->host
  • $this->username
  • $this->password
  • $this->database

Для получения дополнительной информации ознакомьтесь с этой страницей руководства по PHP- и, возможно, вы захотите прочитать больше о Классы и объекты .

1 голос
/ 18 марта 2011
class mySQL{

  var $host;
  var $username;
  var $password;
  var $database;
  public $dbh;  //Variable for storing connection

  public function connect($set_host, $set_username, $set_password, $set_database){
    $this->host = $set_host;
    $this->username = $set_username;
    $this->password = $set_password;
    $this->database = $set_database;

    $this->dbh = mysql_connect($this->host, $this->username, $this->password)or die("cannot connect"); //Store data connection specifier in object
    mysql_select_db($this->database)or die("cannot select DB");

  }

  public function query($sql)
  {
       return mysql_query($sql,$this->dbh);  //Specify connection handler when doing query
  }

  public function fetch($sql)
  {
       return mysql_fetch_array($this->query($sql));
  }

}
$connect = new mySQL();
$connect->connect('localhost', 'user', 'pass', 'database1');
$settings_query = mysql_query("SELECT * FROM settings", $connect->dbh); //Specify connection handler when doing query
$settings = mysql_fetch_array($settings_query);

//With query method in object you can do this:    
$settings_query = $connect->query("SELECT * FROM settings");  //Use object method to query
$settings = mysql_fetch_array($settings_query);

//with fetch method in object you can just do this:
$settings = $connect->fetch("SELECT * FROM settings");

echo $settings['title']; 

Указание обработчика соединения, особенно легко с методом запроса, позволяет легко делать такие вещи, как:

$connect1 = new MySQL();
$connect2 = new MySQL();
$connect1->connect('localhost','user','pass','database1');
$connect2->connect('localhost','user','pass','database2');

и с легкостью обрабатывает более одного соединения объекта / базы данных sql одновременно и помогает устранить любую путаницу, которая может возникнуть.

Это, конечно, в дополнение к правильной ссылке на переменные объектов внутри себя ($this->var).

1 голос
/ 18 марта 2011
mysql_connect("$host", "$username", "$password")or die("cannot connect");

$host нигде не определено. Это должно быть mysql_connect( $this->host, $this->username, $this->password ); для вашего собственного кода выше.

Или, может быть, вы просто скопировали и вставили строку подключения mysql?

0 голосов
/ 18 марта 2011
class mySQL{

  public function connect($set_host, $set_username, $set_password, $set_database){

    mysql_connect("$set_host", "$set_username", "$set_password")or die("cannot connect");
    mysql_select_db("$set_database")or die("cannot select DB");

  }

}

На самом деле, мне показалось, что это работает нормально ..

0 голосов
/ 18 марта 2011

Вы, вероятно, хотите $this:

mysql_connect("{$this->host}", "{$this->username}", "{$this->password}")or die("cannot connect");
mysql_select_db("{$this->database}")or die("cannot select DB");
0 голосов
/ 18 марта 2011

изменить на

mysql_connect( $this->host,  $this->username, $this->password)or die("cannot connect");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...