2016-10-01 4 views
-5

PDOを使用してmysqlに接続しようとしていますが、PDOのインスタンスを作成しようとするとコードが破損します。私がしようとするとキャッチでそれを入れて試してみましたが、それはまだコードを破る/私はこのようにMySQLへの接続しようとPDOインスタンスを作成するとエラーが発生する

protected $conn; 

$dsn = "mysql:host=localhost;dbname=Mydatabase"; 
$this->conn = new PDO($dsn, "admin", "test2016"); 

「localhostのページが機能していません」と言ってページを取得する:

$conn = mysqli_connect("localhost", "admin", "test2016"); 

正常に動作します。

新しいPDOがそのエラーを引き起こす理由はわかりません。あなたの編集に基づいて

class Database { 

protected $conn; 

function __construct() { 
    $this->init(); 
} 

function init(){ 
    try{ 
    $this->conn= $this->connectDB("localhost","Mydatabase","admin","test2016"); // the here 
    $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
    }catch(PDOException $e){ 
     echo "Connection failed: " . $e->getMessage(); 
    } 

} 

function connectDB($servername,$database,$username,$password){ 

    $dsn = "mysql:host=localhost;dbname=Mydatabase"; 
    return new PDO($dsn, $username, $password);// i am not sure why new pdo is the cause of the problem 

    // $conn = mysqli_connect($servername, $username, $password); 

    //if (!$conn) { 
     // die("Connection failed: " . mysqli_connect_error()); 
    //} 

    //echo "Connected successfully"; 

} 
+0

ここにmysqli_とPDOがあるのはなぜですか?あなたがそれらを混ぜているなら、あなたはできません。 –

+0

セミコロンをここで 'protected $ conn'と使用したいと思っています – devpro

+0

私はそれらを同時に使用していません。私はPDOであるそれらの1つだけを使用しようとしています。 mysqlがうまくいくかどうかテストしています。 @ Fred-ii- – user629283

答えて

0

、あなたは未定義の変数にメソッドを呼び出ししようとしている。

function init(){ 
    try{ 
    $this->conn= $this->connectDB("localhost","Mydatabase","admin","test2016"); // the here 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

は次のようになります。

function init(){ 
    try{ 
    $this->conn= $this->connectDB("localhost","Mydatabase","admin","test2016"); // the here 
    $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    ^^^^^ here 
+0

ですか?しかし、私はconnectDBメソッドでPDOを作成していると確信しています。私はそれが今では未定義である理由を理解しようとしています。 – user629283

+0

私はあなたが意味するものを見て、私は '$ this-> conn-> setAttribute(PDO :: ATTR_ERRMODE、PDO :: ERRMODE_EXCEPTION);' に変更しましたが、私はまだ "localhostページが動作していません" – user629283

-2

これはのために働く非常に基本的な例です。あなたがしようとしていることは、考えてください。

class Database { 

    protected $conn; 

    public function __construct() { 
     $this->init(); 
    } 

    public function init() { 
     try{ 
      $this->conn = $this->connectDB("localhost","Mydatabase","admin","test2016"); 
      $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      if (!$this->conn) { 
       throw new Exception("Connection failed: "); 
      } 
      echo 'Connected'; 
     } catch (PDOException $e) { 
      die($e->getMessage()); 
     } 
    } 

    public function connectDB($servername, $database, $username, $password) { 
     $dsn = "mysql:host=".$servername.";dbname=".$database; 
     return new PDO($dsn, $username, $password); 
    } 

} 

このクラスが動作しない場合は、サーバー情報、またはサーバーのステータスをテストしてください。

私はこれが少し助けてくれることを願っています。

+0

私はこの方法で試しましたが、それはまだpdoのインスタンスを作成することと関係しています。私はpdoドライブを持っていないと思っています、または私は設定が不足しています。 (私はmampを使ってMac上にいる)Macでセットアップをやっている悪夢だ。> [ – user629283

関連する問題