php - 尝试将 mysqli_real_escape_string 与 OOP 连接属性一起使用,但它发出警告

标签 php mysql oop

我正在尝试 OOP PHP,这是我用于启动数据库连接的代码:

这是琳达图解的一部分。但在教程中,导师使用的是 mysql 函数,这些函数给出了一条已弃用的消息,所以我尝试将所有这些转换为 mysqli,但函数 mysqli_real_escape_string() 给出了警告。

警告:mysqli_escape_string() 期望参数 1 为 mysqli,第 38 行 {file path} 中给出的 null。

我不知道出了什么问题,我以前以程序形式使用过这个函数,但是在这里使用OOP,它不能正常工作。感谢所有帮助,谢谢。

<?php
require_once("config.php");

class MySQLDatabase{

private $connection;

function __contruct(){
    $this->open_connection();
    }

public function open_connection(){
    $this->connection = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
    if(mysqli_connect_errno()){
        die("Database connection failed: " . mysqli_connect_error());
        }
    }

public function close_connection(){
    if(isset($this->connection)){
        mysqli_close($this->connection);
        unset($this->connection);
        }
    }

public function query($sql){
    $result = mysql_query($sql, $this->connection);
    if(!$result){
        die("Database Query Failed: " . mysql_error());
        }
        return $result;
    }

function mysql_prep($value){
    $magic_quotes_active = get_magic_quotes_gpc();
    if($magic_quotes_active){
        $value = stripslashes($value);
        }
        $value = mysqli_real_escape_string($this->connection, $value);
        return $value;
    }

 private function confirm_query($result_set){
    if(!$result_set){
        die("Database Query Failed: " . mysql_error());         
        }
    }

}

$database = new MySQLDatabase();
?>

配置文件是:

<?php
//Database Constants
defined('DB_SERVER') ? NULL : define("DB_SERVER", "localhost");
defined('DB_USER') ? NULL : define("DB_USER", "root");
defined('DB_PASS') ? NULL : define("DB_PASS", "");
defined('DB_NAME') ? NULL : define("DB_NAME", "photo_gallery");
?>

我尝试运行的文件:

if(isset($database)){
echo "true";
} else{
    echo"false";
    }
echo "<br>";
echo $database->mysql_prep("It's Working?<br>");
?>

最佳答案

您的构造函数名称有拼写错误(因此当您创建 MySQLDatabase 实例时,代码中不会调用它)。应该是:

function __construct(){
    $this->open_connection();
}

关于php - 尝试将 mysqli_real_escape_string 与 OOP 连接属性一起使用,但它发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25521712/

相关文章:

php - 安全地在 Web 上列出登录信息?

php - Wordpress: get_attached_media ('image' ) 按标题排序

mysql - 确定如何检索结果集数据(node.js + sequelize + 外键mysql)

oop - Scala扩展参数化抽象类

java - 实例化类型参数而不传递对象

php - 如何在页面加载后禁用提交按钮 10 秒

php - 向具有现有属性的现有产品添加变体

php - 从表的末尾获取连续值的数量

mysql - 为 WHERE 上的子查询取别名

c++ - 在定义自定义接口(interface)时继承库类