php
  • mysql
  • 2011-01-23 3 views 1 likes 
    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

    은하지 않는 시도 당신은 MySQL의 연결 문제지만 구문 문제를 여는 아니에요 볼? –

    +1

    어! 'if (...) {return 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

    어쩌면이

    $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

    죽지 마라! 인생의 좋은! –

    관련 문제