2013-07-01 5 views
-7

오류 : 정의되지 않은 변수 : mysqli in /var/www/index.php in line 24 치명적 오류 : 함수의 real_escape_string()에 대한 호출 라인 /var/www/index.php 아닌 객체 (24)비 객체의 real_escape_string() 멤버 함수 호출

connect.php

<?php 

/** 
* Mysql Connect 
*/ 

class MysqlConnect 
{ 
    private $db_host; 
    private $db_usermame; 
    private $db_password; 
    private $db_database; 

    public function __construct($db_host,$db_usermame,$db_password,$db_database) 
    { 
     $this->db_host = $db_host; 
     $this->db_usermame = $db_usermame; 
     $this->db_password = $db_password; 
     $this->db_database = $db_database; 

     $mysqli = mysqli_connect("$this->db_host", "$this->db_usermame", "$this->db_password", "$this->db_database") or die("Can't connect"); 
     $mysqli->select_db("$this->db_database") or die("Can't select database"); 
    } 
} 

$mysqli = new MysqlConnect('localhost','root','nistor','game'); 

?> 

index.php를

<?php 

require_once ('connect.php'); 

?> 

Register 

<?php 

/** 
* Register 
*/ 


class RegisterUser 
{ 

    public $username; 
    public $password; 
    public $email; 
    function verify(){ 
     if (isset($_POST['register'])) { 
     return $username = $mysqli->real_escape_string($username); 
     var_dump($mysqli); exit; 
    }else{ 
     echo "no"; 
    } 
} 

} 

$obj = new RegisterUser(); 
$obj->verify(); 

?> 
<form action="index.php" method="POST"> 
Username: <input type="text" name="username"><br /> 
Password: <input type="password" name="password"><br /> 
E-Mail: <input type="text" name="email"><br /> 
<input type="submit" name="register" value="Register"> 
</form> 
+3

정확하게 오류 메시지가 설명되지 않은 것은 무엇입니까? – Jon

+2

가능한 복제본 [참조 : 변수 범위 란 무엇이며 어디에 변수가 "정의되지 않은 변수"오류에서 액세스 할 수 있습니까?] (http://stackoverflow.com/questions/16959576/reference-what-is-variable-scope 어디에서든지 접근 할 수있는 변수들입니다 – deceze

답변

-1

귀하의 확인 기능은를라는 개체를 가지고 있지 않습니다, 귀하의 MysqlConnect 클래스의 constructor에만 존재합니다. 다음과 같이 MysqlConnect 클래스를 재조정 할 수 있습니다. 일단 당신이 이것을하면

class MysqlConnect 
{ 
    private $db_host; 
    private $db_usermame; 
    private $db_password; 
    private $db_database; 
    private $mysqli; 

    public function __construct($db_host,$db_usermame,$db_password,$db_database) 
    { 
     $this->db_host = $db_host; 
     $this->db_usermame = $db_usermame; 
     $this->db_password = $db_password; 
     $this->db_database = $db_database; 

     $this->mysqli = mysqli_connect("$this->db_host", "$this->db_usermame", "$this->db_password", "$this->db_database") or die("Can't connect"); 
     $this->mysqli->select_db("$this->db_database") or die("Can't select database"); 
    } 

    public function getMysqli() 
    { 
     return $this->mysqli; 
    } 
} 

, 당신은 registeruser 당신의 드라이버 클래스에 다음 코드와 비슷한 일을 할 수 있습니다.

class RegisterUser 
{ 

    public $username; 
    public $password; 
    public $email; 
    function verify(){ 
     $mysqlcon = new MysqlConnect('localhost','root','nistor','game'); 
     $mysqli = $mysqlcon->getMysqli(); 
     if (isset($_POST['register'])) { 
     return $username = $mysqli->real_escape_string($username); 
     var_dump($mysqli); exit; 
    }else{ 
     echo "no"; 
    } 
} 

} 
+0

탐욕하지 마십시오. 중복 된 질문을 종료하십시오. –

+0

DevZer와 deceze에게 감사합니다. –

+0

@YourCommonSense 저는 이미 투표했습니다. 또한 누군가를 돕는 것을 믿습니다. 나는 당신의 downvote에 대해 정말로 부주의합니다. – DevZer0