php - 将 mysql 更改为 mysqli 时出现 fatal error : Using $this when not in object context in,

标签 php mysql function mysqli fatal-error

我有一个用于 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);

我尝试更改某些内容,但构造函数 $link 出现问题(无法执行函数)。 fatal error :不在对象上下文中时使用 $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 关键字在静态上下文中不可访问。

像这样更改你的函数定义。

来自

public static function execute($sql) {

public function execute($sql) {

关于php - 将 mysql 更改为 mysqli 时出现 fatal error : Using $this when not in object context in,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19639771/

相关文章:

php - 我是否应该避免创建从数据库获取标题和 url(href) 值的菜单?

php - 使用 PHP 通过代理获取 IP 地址?

mysql - 如何在 MySQL 中使用 REGEXP(或类似的)匹配特定的字符串模式

c - 递归函数在c中打印数字倒计时

php - simplexml,返回具有相同标签的多个项目

php - 旋转并将图像的旋转存储在 php/mysql 网站中?

mysql - 我应该在此查询中使用什么来替换 GROUP BY?

php - Mysql 查询依赖于另一个查询与连接

c++ - 传递结构和参数如何影响函数的性能

java - 传递对象作为参数