2016-05-11 9 views
0

どちらの接続クラスが同じプロジェクトの下にある:エラーコマンドSQLSTATE [HY000] [2002]

1)この最初のクラスは正常に動作し、すべてがそれとして正しく動作しますなければならない:

<?php 
class DAO{ 

    protected $servidor; 
    protected $base; 
    protected $usuario; 
    protected $senha; 
    protected $conexao; 

    public function __construct(){ 
     $this->base = "ima"; 
     $this->usuario = 'admin'; 
     $this->senha = 'wd4567'; 
     $this->servidor = 'localhost'; 
     $this->abrirConexao(); 
     $this->selecionar();   
    } 

    protected function abrirConexao(){ 
     $this->conexao = mysqli_connect($this->servidor, $this->usuario, $this->senha); 
     if (!$this->conexao) { 
      die("Connection failed: " . mysqli_connect_error()); 
     } 
//  echo "Connected successfully"; 
     mysqli_set_charset($this->conexao, "utf8"); 


    } 

2)PDOを使用して、この第二接続クラスは、エラーを返していない:SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリ。しかし、これまで私が見ることができるように、データセットが同じである...これで助けを必要としてください:

<?php 
/* 
    * Constantes de parâmetros para configuração da conexão 
    */ 
define('HOST', 'localhost'); 
define('DBNAME', 'ima'); 
define('CHARSET', 'utf8'); 
define('USER', 'admin'); 
define('PASSWORD', 'wd4567'); 

class Conexao { 

    /* 
    * Atributo estático para instância do PDO 
    */ 
    private static $pdo; 

    /* 
    * Escondendo o construtor da classe 
    */ 
    private function __construct() { 
    // 
    } 

    /* 
    * Método estático para retornar uma conexão válida 
    * Verifica se já existe uma instância da conexão, caso não, configura uma nova conexão 
    */ 
    public static function getInstance() { 
    if (!isset(self::$pdo)) { 
     try { 
     $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_PERSISTENT => TRUE); 
     echo("mysql:host=" . HOST . "; dbname=" . DBNAME . "; charset=" . CHARSET . "; ". USER ." ". PASSWORD . $opcoes); 
     self::$pdo = new PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . "; charset=" . CHARSET . "; ", USER, PASSWORD, $opcoes); 
     } catch (PDOException $e) { 
     print "Erro: " . $e->getMessage(); 
     } 
    } 
    return self::$pdo; 
    } 
} 
?> 

は、THANKSをこの上の任意の助けに感謝!

答えて

1

DSNの空白をすべて削除しようとしましたか?以下のような何か:

"mysql:host=" . HOST . ";dbname=" . DBNAME . ";charset=" . CHARSET . ";" 
0

(https://phpdelusions.net/pdo#errors)[それらを報告するエラーの例外をキャッチしない]

class Conexao { 
    private static $pdo; 

    public static function getInstance() { 
     if (!self::$pdo) { 
      self::$pdo = new PDO(
       'mysql:host=localhost;dbname=ima;charset=utf8;', 
       'admin', 
       'wd4567', 
       array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", 
         PDO::ATTR_PERSISTENT => TRUE, 
         PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 
       )); 
     } 
     return self::$pdo; 
    } 
} 

// Create connection 
$pdo = Conexao::getInstance(); 
// Close connection 
$pdo = null; 
+0

この例をしてください試してみてください。 –

+0

さらに、あなたのコードにエラーを残しておいて、あなたの答えをトピックから外しました。 –

+0

今は大丈夫ですか? @YourCommonSenseあなたが何かを完了したときにあなたは編集を提案することができます:) –