Mysql db sınıfı - Bağlantı sorunları

3 Cevap php

Yani bir MySQL veritabanı sınıf yapmak için çalışıyorum, ve ben kurucusundan ayrı yöntemle benim db seçimi tutmak istiyorum. Nedense bu setDb () işlevi çalışmak istemiyor.

class mysql
{
    public function __construct($server,$user,$pass)
{
	if(!$this->mysql_connection = mysql_connect($server,$user,$pass))
		print 'Could not connect to MySQL';
}

    public function setDb($dbname)
{
	$this->database = $dbname;
	if(!mysql_select_db($this->database,$this->mysql_connection))
		$this->database = '';
		print 'Could not connect to the MySQL database';
		return false;
	return true;
}

    private $database;
private $mysql_connection;
}

3 Cevap

Siz, örneğin, bir MySQL hatası durumunda bir istisna olabilir

class DbMySQL
{
  protected $database;
  protected $mysql_connection;

  public function __construct($server,$user,$pass)
  {
    $this->mysql_connection = mysql_connect($server,$user,$pass);
    if( !$this->mysql_connection ) {
      throw new ErrorException(mysql_error(), mysql_errno());
    }
  }

  public function setDb($dbname)
  {
    if ( !mysql_select_db($dbname, $this->mysql_connection) ) {
      throw new ErrorException(mysql_error($this->mysql_connection), mysql_errno($this->mysql_connection));
    }
    else {
      $this->database = $dbname;
    }
    return $this;
  }
}

$m = new DbMySQL('localhost', '...', '...');
$m->setDB('...');

Belki ErrorException() iyi seçenek değildir, ama anladınız umarım ;-)

Ben herhangi bir göze batan bir sorun görmüyorum. Aşağıdaki gibi sınıf arıyorsun?

$db = new mysql($server, $user, $password);
$db->setDb('YOUR_DATABASE_NAME');

Sen mysql_select_db satırdan sonra küme ayraçları eklemek gerekir, ve dönüş gerçek satırından önce. Koşul karşılandığında yalnızca koşul altında ilk deyim yürütülür. Yani işlevi her zaman false döndürür.