如何在扩展类中实现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  ";
} else {
echo "Errore  " . $mysqli->error;
}
}
}
$form = new Check();
$form->checkImage();
$form->sendImage();
?>
答案 0 :(得分:3)
您的代码中存在一些错误。
$mysqli
成员在抽象类中是私有的。它不会被Check
类继承,因此它不存在。保护它。
对课程成员的访问权限始终需要$this->
,具体为$this->mysqli
。
构造函数必须名为__construct
,前面有两个下划线。
图像检查看起来不对。 $ _POST ['image']确实包含您希望存储在数据库中的内容,但您也将其与整数值进行比较,并且如果它更大则似乎回显错误消息。虽然数据处理可行,例如你可以将POST数据中的字符串与整数进行比较,看起来你想要别的东西。