class Database

dakata__92

Super Moderator
Някой може ли да ми даде такъв клас за връзка с база данни. В нета има доста но просто някой който ще е практичен като конфиг файл примерно. :)
 
djman каза:
Какво искаш да има в него? Само връзка или? mysqli

Или искаш ORM?
Принципно нещо такова:

PHP:
<?php 
$dbhost = "localhost"; 
$dbuser = "root@localhost";  
$dbpass = ""; 
$dbname = "test"; 

@mysql_connect($dbhost,$dbuser,$dbpass);
@mysql_select_db($dbname) or die(mysql_error());
mysql_query("SET NAMES UTF8");
?>

На XAMPP mysqli незнам дали върви и изобщо нее съм се свързвал до сега по този начин с mysqli.
 
Махай тия @ :D И е силно желатено да не използваш mysql* вече.

Пробвай mysqli. Със сигурност работи. Ако не - включи го в php.ini :)

http://www.phphaven.com/article.php?id=65%C2%A0
 
djman каза:
Махай тия @ :D И е силно желатено да не използваш mysql* вече.

Пробвай mysqli. Със сигурност работи. Ако не - включи го в php.ini :)

http://www.phphaven.com/article.php?id=65%C2%A0
Това което съм дал е стар код от нета за пример. Ааа работи но нужно ли е изобщо да го правя в клас това? Знам, че поствам грешен код просто за въпроса да попитам и да покажа какво имам предвид:
PHP:
class Database{

$DB_NAME = 'oop';
$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '';
$mysqli = new mysqli($DB_HOST, $DB_USER, $DB_PASS, $DB_NAME);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

// A QUICK QUERY ON A FAKE USER TABLE
$query = "SELECT * FROM `user` WHERE `id`='1'";
$result = $mysqli->query($query) or die($mysqli->error.__LINE__);

// GOING THROUGH THE DATA
if($result->num_rows > 0) {
	while($row = $result->fetch_assoc()) {
		echo $row['name'];	
	}
}
else {
	echo 'NO RESULTS';	
}
// CLOSE CONNECTION
mysqli_close($mysqli);
}
 
Ето аз какво съм си писал като клас за конекция към базата. Може да се направят още подобрения като, проверки дали са попълнени свойствата за хост, юзер и т.н. също и функция за дисконект, ама и така става. Сигурно може да се направи и по добре и ако някой е по в час с тия неща няма да е лошо да се изкаже. С ПДО знам че е по добре и по сигурно но аз не съм му свикнал и за сега така си бачкам.

Код:
class database {

    private static $instance = null;
    private $db_conn = null;
    private $db_sel = null;
    private $db_host = '';
    private $db_user = '';
    private $db_pass = '';
    private $db_name = '';

    private function __construct() {
        
    }

    public static function getInstance() {

        if (self::$instance == null) {

            self::$instance = new database();
        }

        return self::$instance;
    }

    public function connect() {

        if ($this->db_conn == null) {

            $this->db_conn = @mysql_connect($this->db_host, $this->db_user, $this->db_pass);

            if ($this->db_sel == null) {

                $this->db_sel = @mysql_select_db($this->db_name, $this->db_conn);
            }
            
            else {
                throw new \Exception('Can not select database');
            }
            
        } 
        
        else {
            throw new \Exception('Can not connect to database');
        }
        
    }

}
 

Горе