我试图将超全局mysqli类中的所有方法和属性继承到我的db类中。
这是DB类:
class DB extends mysqli
{
protected $mysqli;
public function __construct () {
// connect to MySQL
$mysqli = new mysqli('host', 'username', 'password', 'dbname');
// output error if unable to connect
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
exit;
}
}
}
这是主要的会议课程:
class Meetings
{
function __construct () {
require_once('../include/classes/db.class.php');
$db = new DB();
$field = $db->real_escape_string($_POST['about']);
}
}
在Meetings类中,我希望能够通过超全局mysqli类继承的实例化DB类调用real_escape_string方法。
我收到此错误:警告:mysqli :: real_escape_string()[mysqli.real-escape-string]:无法获取数据库
答案 0 :(得分:0)
糟糕! 您创建了DB对象,db对象创建了另一个mysqli类的实例。你不应该叫新的mysqli,但你应该打电话给
parent::__construct('host', 'username', 'password', 'dbname')
或
parent::mysqli('host', 'username', 'password', 'dbname')
我不知道mysqli构造函数的格式是什么。
在此之后,您不需要DB类中的mysql属性,因为在这种情况下,您的mysqli属性与DB类的$ this相同。所以,不是$ mysqli-> connect_errno,而是$ this-> connect_errno是对的。