Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie die PDO-Datenbankklasse, ohne jedes Mal eine neue Verbindung herzustellen?

Sie sollten die in der Antwort von mr.void gezeigte Straße nehmen. Kurz gesagt:

  1. clsDatabase loswerden.
  2. Erstellen Sie eine Instanz von PDO.
  3. Übergeben Sie es an die Eigenschaft von clsDBLogin, wie es in der Antwort von mr.void gezeigt wird.
  4. Verwenden Sie dann diese pdo-Instanz in Form von $this->db->prepare() und so weiter

Also sollte es wie

sein
class clsDBLogin
{
    public function __construct($db)
    {
        $this->db = $db;
    }

    public function validateLogin($email)
    {  
        $email = trim($email);

        // Check user in db to start verification
        $query = 'SELECT * FROM users u, users_info ui 
                  WHERE u.users_id = ui.users_id AND u.email = ?';
        $stmt = $this->db->prepare($query);
        $stmt->execute([$email]);
        return $stmt->fetch();
    }
}

$dsn = 'mysql: host=localhost;dbname=test;charset=utf8';
$options = array(
        PDO::ATTR_PERSISTENT            => true,
        PDO::ATTR_ERRMODE               => PDO::ERRMODE_EXCEPTION,
);
// Create a new PDO instanace
$pdo = new PDO($dsn, $this->user, $this->pass, $options); 

$DBLogin = new clsDBLogin($pdo);
$user = $DBLogin->validateLogin($email);