2016-05-01 10 views
-1

PHPでPDOを使用し、OOPを使用するのが初めてです。私は転記する前にこのエラーの他のstackoverflowの質問を見るためにオンラインになった。私は以下のようなコードを持っていて、私が手を差し伸べる理由を知っています。PDO - 接続に成功したブログエントリをリストする:致命的なエラー:メンバー以外のオブジェクトのprepare()関数を呼び出す

データベースのテーブルのblog_titlesを表示しようとしています。

<!DOCTYPE HTML> 
    <head> 
    <title>Simple blog</title> 
    </head> 
    <body> 
    <h1>Listing blog titles</h1> 

    <?php 

     include "system/connection.php"; 

     $sql = "SELECT * FROM blogs ORDER BY id DESC"; 
     $getentries = $dbh->prepare($sql); 
     if ($getentries->execute(array($_GET['blog_title']))) { 
      while ($row = $getentries->fetch()) { 
      print_r($row); 
      } 
     } 

    ?> 

    </body> 
</html> 

接続に成功しました。これは私の接続スクリプトです。

<?php 

$servername = "localhost"; 
$dbname = "simple_blog"; 
$username = "root"; 
$password = ""; 

try { 
    global $dbh; 
    $dbh = new PDO('mysql:host=localhost;dbname=simple_blog', $username, $password); 
    { 
     print("Connection success!"); 
    } 
    $dbh = null; 
} catch (PDOException $e) { 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 
?> 

これは私が受け取るエラーです:

Fatal error: Call to a member function prepare() on a non-object in C:\xampp\htdocs\simple-blog\index.php on line 13

私は、これは非常に高く評価されるだろう理解を支援する任意の指導。

ありがとうございます。

アダム

+0

と@ PedroLobitoの重複が無効です。* typo * –

答えて

1

あなたが接続を開始した後にそれは、あなたがnullを代入している、単純です:)

global $dbh; 
    $dbh = new PDO('mysql:host=localhost;dbname=simple_blog', $username, $password); 
    { 
     print("Connection success!"); 
    } 

は$ DBH =ヌルを削除し、あなたが行ってもいいです。また、SQLへの呼び出しを行う前にグローバル変数として割り当てる必要はありません。

nullを割り当てる理由はわかりませんが、接続をnullに書き換えることを意味します。

"接続を閉じる必要がある"と聞いたことがある場合は、SQLへの呼び出しを行って結果を解析した後に行う必要がありますが、一般的にPHPでは接続を閉じる必要はありません。それは世話をするからです。

+0

のように閉じてください。ありがとう、私はそのハハハを逃したとは思えません! –

関連する問題