2013-07-01 26 views
-7

错误是: 未定义的变量:第24行/var/www/index.php中的mysqli致命错误:调用成员函数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 -which-variables-are-accessible-from-where-and) – 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 and deceze –

+0

@YourCommonSense我已经投了票,我也相信帮助某人。我真的不在乎你的倒行逆施。 – DevZer0

相关问题