2011-06-25 13 views
1

私は問題があります。私のPHPコードでグローバル変数を使用すると、私のサーバーはHTMLコードを全く表示しません。グローバル変数をコメントアウトすると、私のhtmlページは正常に動作します!私はここで何か間違っていますか?PHPのグローバル変数が私のhtmlアップ!

PHPファイル:

class DBConnect{ 

    // If I comment this out, the HTML shows 
    global $con; 

    function connectDB() { 
     $user = "bstokni_basurin"; 
     $pass = "basurin"; 
     $database = "basurin"; 
     $host = "localhost"; 

     $this->$con = mysql_connect($host, $user, $pass) or die(mysql_error()); 
     echo "Connected to MySQL </br>"; 
     echo $con; 
    } 

    function closeDB() { 
     mysql_close($con); 
     echo $con; 
     echo "MySQL closed"; 
    } 
} 

htmlファイル:

<!-- Left colon --> 
      <div id="leftCol"> 
       <p>Her kemur ein menu at standa</p> 
       <? 
        $menuObj = new DBConnect(); 
        $menuObj->connectDB(); 
       ?> 
      </div> 

私はここで間違って何をしているのですか?

+1

PHPエラーが発生しましたが、エラーは表示されません。これをページの一番上に置き、 'error_reporting(E_ALL);を得ることを教えてください。 ini_set( 'display_errors'、 '1'); ' – Swift

+0

@Mike Swift - スタイルは単にエラーや警告を隠している可能性もあります。 @ hogni89、問題のあるdivの近くにあるテキストを選択しようとしましたか、カスタムエラーハンドラをインストールしようとしましたか? –

答えて

3

変数がクラススコープにあるため、代わりにglobalpublicに変更してみてください。あなたが提供した例では、グローバルにする必要はありません。

+1

これはおそらく予期しないことです。つまり、Mike Swiftが指摘しているように、抑制されたエラーがスローされます。ここに証拠があります:http://codepad.org/b5JsmgPx –

+0

あなたの答えをありがとう。私はPHPでクラスに新しくなりました。 私には2つの問題がありました。まず最初に: $ this - > $ con = ... : $ this-> con = ... グローバルからパブリックに変更することもできました:)私は今すぐ寝ることができます;) – hogni89

+0

'function __construct(){global $ test;}を追加してください。 }} '現在のプロジェクトの' global $ test; 'を' public $ text; 'に変更します。クラスがインスタンス化されるとき、変数はグローバルとして設定されます。 –

3

ないでください。

$this->$con 

こと:

$this->con 

conという名前のメンバー変数にアクセスしようとしているだけの場合は、あなたが参照する他の場所はちょうど$conで、理由は$thisの1か所にありますか? $this->$conはどうするのか分かりませんが、$conがグローバルに宣言されているかどうかによって影響を受けると推測しています。

+0

'$ this-> $ con'は、' $ con'の値が何であれ、名前をつけた名前のpublic変数にアクセスしようとします。 [この例](http://codepad.org/CKU7XB2Y)を参照してください。彼のケースでは、 '$ this-> $ con'はおそらく間違って文字列として解釈されるいくつかのMySQLリソースです。 –

+0

これで余分な$が毎回それを吹き飛ばします。しかし、あなたもエラーをチェックする必要があります。 – meteorainer

+0

私は気分があった。しかし、 '$ con'の内容はどちらの場合も' null'でしょうか?ですから、 '$ this-> $ con = ...'は 'global $ con'宣言があるかどうかにかかわらず同じ(間違った)場所に割り当てるべきです。では、1つのケースはどのように動作し、もう1つは動作しませんか? – Ben

関連する問題