2011-01-23 17 views
1

私が作っているテストサイトでmysqlのやりとりを処理するために自分のクラスを作成しようとしています。 mysqli_connect()をクラス宣言内で動作させることができません。たびに私はこの構文エラーを取得スクリプトでクラスを使用しよう:「私はその行を見続けるphpクラスのmysql接続を開く際に問題が発生しました

<?php 
class Db{ 
    private $host = 'localhost'; 
    private $db_user = 'username'; 
    private $db_pass = 'password'; 
    private $db_name = 'dbname'; 
    private $con = mysqli_connect($this->host, $this->db_user, $this->db_pass, $this->db_name) or die('failed to connect'); 

    public function valid_login($login_user, $login_pass){ 

     if(isset($login_user) && isset($login_pass) && ($login_user !== "") && ($login_pass !== "")){ 
      include('./includes/functions.php'); 

      $clean_lu = mysqli_real_escape_string($this->con, $login_user); 
      $clean_lp = mysqli_real_escape_string($this->con, $login_pass); 

      $login_query = "SELECT hash FROM users WHERE user_name='$clean_lu'"; 
      $login_results = mysqli_query($this->con, $login_query) or die('bad query'); 
      $login_hash = mysqli_fetch_array($login_results); 

      if(isset($login_hash[0])){ 
       if(check_hash($clean_lp, $login_hash[0])){ 
        return true; 
       }else{ 
        return false; 
       } 
      }else{ 
       return false; 
      } 
     } 
    } 

    mysqli_close($this->con); 
} 
?> 

と私ができる:ここでは

Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:\xampp\htdocs\autoshop\classes\class_db.inc.php on line 7

をコードでは、私がこれまで持っています何か悪い構文を見つける。

これは私の顔の真正面にある本当にシンプルな解決策であるとお詫び申し上げます。

+0

を試してみてください? –

+1

ああ! 'if(...){trueを返します。 } else {return false; } '。 'return isset($ login_hash [0])&& check_hash($ clean_lp、$ login_hash [0]);' –

答えて

4

オブジェクトのメンバーを関数呼び出しの結果で初期化することはできません。代わりにコンストラクタでこれを実行します。

class Db 
{ 
    private $con; 

    public function __construct() 
    { 
     $this->con = mysqli_connect($this->host, $this->db_user, $this->db_pass, $this->db_name) or die('failed to connect'); 
    } 
    ... 
} 

また、mysqli_close($this->con);はどこにありますか?どの方法にも属しません。

Btw、手動で接続を閉じる理由は何ですか?

+0

...そしてDBクラスのログインをすべてチェックする理由: mres(パスワード)のように –

+0

@Col。 Shrapnel:あなたの注意はOPが理解するのが難しいいくつかの "建築家"の領域をカバーします;-) – zerkms

+0

うん、単純で、私の顔の前で右。ちょうど私が思ったように。助けてくれてありがとう、これは私の最初のPHPクラスです。 – Raz

1

多分あなたはそれがMySQLの接続に問題はなく、構文の問題を開いていない表示されていないこの

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 
if ($mysqli->connect_error) 
{ 
trigger_error('Connect Error (' . $mysqli->connect_errno . ') ' 
     . $mysqli->connect_error); 
} 
+1

死ぬな!生きてるっていい! –

関連する問題