php - OOP PHP First Class Mysql数据库连接

标签 php oop class database-connection

我正在参加一个测试类,主要是为了自学。下面是类:

class Connection
{   
    public $con;
    public $dbSelected;
    public $activeConnection;
    public $dataBaseName;
    function __contruct($dbUserName, $dbPassword, $server = "localhost")
    {
        $this->con = mysql_connect($server,$dbUserName,$dbPassword);
        if(!$this->$con)
        {
            $this->activeConnection = false;
        }
        else
        {
            $this->activeConnection = true;
        }
    }

    public function dbConnect($dbName, $identifyer = null)
    {   
        if ($identifyer === null)
        {
            $identifyer = $this->con;
        }
        $this->dbSelected = mysql_select_db($dbName, $identifyer);
        $this->dataBaseName = $dbName;
        if($this->dbSelected != true)
        {
            $this->connectionErrorReport(__LINE__);
        }
    }


    public function cleanData( array $submission)
    {
        unset($submission["throughTheCleaners"]);
        foreach($submission as $key => $value)
        {

            if(is_array($value))
            {
                $data[$key] = $this->cleanData($value);
            }
            else
            {
                $data[$key] = mysql_real_escape_string($value);
            }
        }
        $data["throughTheCleaners"] = true;
        return $data;
    }


    public function query($query, $dataSent)
    {
        if($dataSent["throughTheCleaners"] != true)
        {
            die("you must clean the data".__LINE__);
        }

        if($this->activeConnection == true && $this->dbSelected == true)
        {
            $result = mysql_query($query) or queryErrorReport($query, __LINE__);
            $i = 0;
            while($row = mysql_fetch_array($result))
            {
                foreach($row as $key => $value)
                {
                    $data[$i][$key] = $value;
                    $i++;
                }
            }
            return $data;           
        }
        else
        {
            $this->$connectionErrorReport(__LINE__);
        }
    }   

    public function connectionErrorReport($line = __LINE__)
    {
        $error = "There has been a connection error on line ".$line."</br>";
        if($this->activeConnection == false)
        {
            $error.= "Active Connection Error <br/>";
        }
        if($this->dbSelected  == false)
        {
            $error.= "Data Base Selection Error <br/>";
        }
        die($error.mysql_error());
    }

    public function queryErrorReport($query, $line = __LINE__)
    {
        die("There was a query error on ".$line."<br />$query<br/>".mysql_error());
    }

    function __destruct() {
        mysql_close($this->con);
    }
}

我终其一生都想不通为什么它不会在构造函数调用期间获取存储在 $con 变量中的 mysql 数据库资源并在其他函数中使用它。

最终在另一个类中会有一个字符串加密函数,但我目前遇到的唯一错误是连接类。

因此抛出错误的页面如下所示:

include 'connection.php';
include 'loginClass.php';
$longinConnection = new Connection('***USERNAMEHERE***','***PASSWORD***');
$longinConnection->dbConnect("***DBTOCONNECTTO***");
echo Authoriz::encryptPassword("***USERPASSWORD***",$longinConnection);

此页面测试了 encryptPassword 函数,但我什至无法让 Connection 类工作。它抛出的错误如下:

Warning: mysql_select_db() expects parameter 2 to be resource, null given in [PATH] on line 27 There has been a connection error on line 31 Active Connection Error Data Base Selection Error

Warning: mysql_close() expects parameter 1 to be resource, null given in [PATH] on line 103

在我看来,由于某种原因没有设置 $con 变量,如果能深入了解我做错了什么,我们将不胜感激。

最佳答案

你拼错了 __construct 所以当你初始化类时它没有触发,也没有初始化 $this->con

关于php - OOP PHP First Class Mysql数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9692965/

相关文章:

PHP Cookies 在本地主机上运行良好,但在实时服务器上不起作用

php - 函数返回空数据

r - 将非 S3 基本函数重新定义为 R 包中的 S3 函数是不好的风格吗?

C# - 如何使用具有一个属性的接口(interface)在类之间进行通信

swift - 在不同场景中声明类变量

JAVA实现接口(interface)

javascript - 在javascript中将数据发送到服务器后接收JSON对象

php - 获取实际字段名称和值 : Simplified ver

c# - 在基类中重新创建实例

oop - Fortran 2003 中的链接类型绑定(bind)过程?