Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Conectando-se ao AWS RDS via PDO


O código está funcionando agora, embora, de maneira bastante frustrante, eu nunca tenha entendido por que ele não estava funcionando em primeiro lugar! Eu suspeito que tenha algo a ver com não pegar o número da porta corretamente - talvez um erro de digitação em algum lugar que foi corrigido 'acidentalmente' (em vez de deliberadamente) quando eu estava tentando as coisas. Este código agora funciona (apenas para 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);
      }