2

如何在扩展类中实现 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();
?>
4

1 回答 1

3

您的代码中有一些错误。

  1. $mysqli成员在抽象类中是私有的。它不会被Check类继承,所以它在那里不存在。使其受到保护。

  2. 访问一个类的成员总是需要$this->在前面,特别$this->mysqli是在这个实例中。

  3. 构造函数的命名必须__construct在前面加上两个下划线。

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

于 2013-02-04T22:31:39.360 回答