Mysql
 sql >> база данни >  >> RDS >> Mysql

Опитвам се да създам статичен клас на база данни, до който имам достъп от всяка функция извън класа

За да може вашият клас да работи статично, трябва да направите няколко неща.

Първо, направете връзката статична, напр.

private static $connection;

Второ, защо всички долни черти?

define('DB_HOST', 'localhost');
define('DB_NAME', 'your_db_name');
define('DB_USER', 'username');
define('DB_PASS', 'password');

Също така, защо изобщо да използвате константи на клас? Просто използвайте константите, които вече сте дефинирали.

Трето, губете конструктора. Не можете да очаквате да създадете екземпляр на този клас и използвайте го статично. Бих избрал подход с мързеливо зареждане за връзката

private static function getConnection() {
    if (self::$connection === null) {
        $dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',
            DB_HOST, DB_NAME);

        self::$connection = new PDO($dsn, DB_USER, DB_PASS, array(
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::ATTR_EMULATE_PREPARES => false,
            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
        ));
    }
    return self::$connection;
}

След това вашите публични методи ще извикат този метод вътрешно. Ще разясня също така вашия dbDataArray метод, за да ви покаже как да върнете асоциативен масив

public static function dbDataArray($query, $params = array()) {
    $stmt = self::getConnection()->prepare($query);
    $stmt->execute($params);
    return $stmt->fetchAll();
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да изтегля данни от mysql база данни и да визуализирам с D3.JS?

  2. Как да се показват записи на база данни в изгледа, без да се повтаря поле?

  3. MySQL LIKE срещу LOCATE

  4. Има ли начин да се направи INSERT...ON DUPLICATE KEY UPDATE в Zend Framework 1.5?

  5. Грешка в MySQL 2006:mysql сървърът е изчезнал