sql >> Databasteknik >  >> RDS >> Mysql

Försöker bygga en statisk databasklass som jag kan komma åt från vilken funktion som helst utanför klassen

För att din klass ska fungera statiskt måste du göra några saker.

Gör först anslutningen statisk, t.ex.

private static $connection;

För det andra, varför alla understreck?

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

Dessutom, varför använda klasskonstanter överhuvudtaget? Använd bara de konstanter du redan har definierat.

För det tredje, förlora konstruktören. Du kan inte förvänta dig att skapa en instans av den här klassen och använd den statiskt. Jag skulle välja en lat-belastningsmetod för anslutningen

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;
}

Sedan skulle dina offentliga metoder anropa denna metod internt. Jag kommer också att utveckla din dbDataArray metod för att visa hur du returnerar en associativ array

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



  1. MySQL-felkod:1305. FUNKTION JSON_EXTRACT finns inte i MySQL-klientversion:5.5.52

  2. Databasen kan inte öppnas eftersom den är version 782. Denna server stöder version 706 och tidigare. En nedgraderingsväg stöds inte

  3. Hur kan jag aktivera MySQL:s långsamma frågelogg utan att starta om MySQL?

  4. Hur man får det korta månadsnamnet från ett datum i MySQL