Mysql
 sql >> Database >  >> RDS >> Mysql

Connessione ad AWS RDS tramite PDO

Il codice funziona ora, anche se in modo abbastanza frustrante non sono mai arrivato in fondo al motivo per cui non funzionava in primo luogo! Sospetto che fosse qualcosa a che fare con il non rilevare correttamente il numero di porta - forse un errore di battitura da qualche parte che è stato corretto "accidentalmente" (piuttosto che deliberatamente) mentre stavo provando le cose. Questo codice ora funziona (solo per 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);
      }