未定义的变量:mysqli - PHP OOP

时间:2013-02-04 22:29:02

标签: mysqli php

如何在扩展类中实现mysqli?

我上传了一张图片并将其存储在MySQL数据库中,但是我收到了这个错误:

  

注意:未定义的变量:mysqli in ... ecc / ecc / on line 33

     

致命错误:在第33行的... ecc / ecc /中的非对象上调用成员函数query()

这是我的测试代码:

<?php
    interface ICheckImage {
        public function checkImage();
        public function sendImage();
    }           
    abstract class ACheckImage implements ICheckImage {
        public $image;
        private $mysqli;    
        public function _construct(){
            $this->image = $_POST['image'];
            $this->mysqli = new mysqli('localhost','test','test','test');
        }
    }           
    class Check extends ACheckImage {
        public function checkImage() {
            if($this->image > 102400) {
                echo "File troppo grande";
            } 
        }
        public function sendImage() {
            //This is the line 33 give me the error
            if ($mysqli->query("INSERT INTO images (image) VALUES ('$this->image')")) {
            echo "Upload avvenuto &nbsp";
            } else {
                echo "Errore &nbsp" . $mysqli->error;
            }  
        }
    }   
    $form = new Check();
    $form->checkImage();    
    $form->sendImage();
?>

1 个答案:

答案 0 :(得分:3)

您的代码中存在一些错误。

  1. $mysqli成员在抽象类中是私有的。它不会被Check类继承,因此它不存在。保护它。

  2. 对课程成员的访问权限始终需要$this->,具体为$this->mysqli

  3. 构造函数必须名为__construct,前面有两个下划线。

  4. 图像检查看起来不对。 $ _POST ['image']确实包含您希望存储在数据库中的内容,但您也将其与整数值进行比较,并且如果它更大则似乎回显错误消息。虽然数据处理可行,例如你可以将POST数据中的字符串与整数进行比较,看起来你想要别的东西。