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

Verbinden mit AWS RDS über PDO

Ich habe den Code jetzt zum Laufen gebracht, obwohl ich ziemlich frustrierend nie auf den Grund gekommen bin, warum er überhaupt nicht funktioniert hat! Ich vermute, es lag daran, dass die Portnummer nicht richtig erkannt wurde - vielleicht ein Tippfehler irgendwo, der "versehentlich" (eher als absichtlich) korrigiert wurde, als ich Dinge ausprobierte. Dieser Code funktioniert jetzt (nur für MySQL):

      $dsn = null;
      $options = null;
      $this->host = SYSTEM_CONFIG["database"]["host"];
      $this->type = SYSTEM_CONFIG["database"]["type"];
      $this->name = SYSTEM_CONFIG["database"]["name"];
      $this->user = SYSTEM_CONFIG["database"]["user"];
      $this->pass = SYSTEM_CONFIG["database"]["pass"];
      $this->port = SYSTEM_CONFIG["database"]["port"];

      switch ($this->type) {
         case "SQLSRV":
            // Other untested code...
            break;
         default: 
            $dsn = "mysql:host={$this->host};port={$this->port};dbname={$this->name};charset=utf8";
            $options = [
               PDO::ATTR_PERSISTENT => false,
               PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
               PDO::ATTR_EMULATE_PREPARES => false,
               PDO::ATTR_STRINGIFY_FETCHES => false
            ];
      }
      try {
         $this->pdo = new PDO($dsn, $this->user, $this->pass, $options);
      } catch (PDOException $e) {
         $this->logError($e);
      } catch (Exception $e) {
         $this->logError($e);
      }