我有这个类用于连接mysql,我想在不更改函数名称的情况下将其替换为mysqli。
class DB { function DB($db_host, $db_user, $db_port, $db_pass, $db_name) {
$link = mysql_connect($db_host, $db_user, $db_pass) or die("Can't connect to database");
mysql_select_db($db_name, $link);
}
public static function execute($sql) {
$result = mysql_query($sql) or die("Could not query:$sql");
return $result;
}
public static function num_rows($result)
{
return mysql_num_rows($result);
}
public static function fetch($result)
{
return mysql_fetch_assoc($result);
}
}
$DB = new DB(DB_HOST, DB_USER, DB_PORT, DB_PASS, DB_NAME);
我试图改变的东西,但有一个与构造函数$链接的问题(不能放到执行功能)。致命错误:使用$ this当不在对象上下文中时
class DB {
function DB($db_host, $db_user, $db_pass, $db_name) {
$link = mysqli_connect($db_host, $db_user, $db_pass,$db_name) or die(mysqli_connect_error());
return $link;
}
public static function execute($sql) {
//$link = mysqli_connect('localhost', 'root', '' , 'database');
$this->DB();
$result = mysqli_query(**$link**,$sql);
return $result;
}
public static function num_rows($result)
{
return mysqli_num_rows($result);
}
public static function fetch($result)
{
return mysqli_fetch_assoc($result);
}
}
如何在执行函数中使用构造函数$ link? 有人可以帮助我吗?先谢谢你。
你不能在静态函数中使用'$ this'蒸发散。你需要让'$ link'成为一个静态变量。 – Barmar
你是否意识到你的班级非常不安全,并且包含重要的缺陷? –
不,有什么问题?你可以帮我吗?我需要带mysqli连接的类 – Ash