dongpiao0731 2013-01-20 10:22
浏览 73
已采纳

MySQLi类,未定义变量[关闭]

I have a MySQLi class that I am using but when I initliaze it and then try and perform a query, I get the following error:

Notice: Undefined variable: MySQLi in ...

Im new to mysqli and classes

Here is my Class:

<?PHP
    class DB
    {
        private static $instance;
        private $MySQLi;

        private function __construct(array $dbOpt)
        {
            $this->MySQLi = @ new MySQLi($dbOpt['db_host'],$dbOpt['db_user'],$dbOpt['db_pass'],$dbOpt['db_name']);

            if(mysqli_connect_errno()) {
                throw new Exception("Database connection error");   
            }

            $this->MySQLi->set_charset("utf8");
        }

        public static function init(array $dbOpt)
        {
            if(self::$instance instanceof self) {
                return false;   
            } else {
                self::$instance = new self($dbOpt);
            }
        }

        public static function getMySQLiObj() {
            return self::$instance->$MySQLi;    
        }

        public static function query($q) {
/* This is the line that fails */
            return self::$instance->$MySQLi->query($q); 
        }

        public static function escape($str) {
            return self::$instance->$MySQLi->real_escape_string(htmlspecialchars($str));    
        }
    }
?>

Here is my query:

//Connect to database
DB::init($dbOpt);

$result = DB::query("SELECT * FROM myTable");

if(!$result) {
    echo "MySQLi Query failed"; 
}
else {
//handle query
}

I have commented above the line that fails.

  • 写回答

2条回答 默认 最新

  • dongyi1490 2013-01-20 10:25
    关注

    Remove the $. The code of your DB::query() method should look like this:

    return self::$instance->MySQLi->query($q); 
    

    Note, a static var will be accsessed this way:

    Classname::$varname
    

    an instance var will be accessed as follows:

    $instance = new Classname();
    $instance->varname;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)