Php 外函数问题

Php 外函数问题,php,Php,我编写了关闭mysql会话的函数 <?php class mysql { var $user; var $password; var $database; var $host; var $out; function mysql($username, $password, $database, $host) { $this->user = $username; $this->password

我编写了关闭mysql会话的函数

<?php
class mysql
{
    var $user;
    var $password;
    var $database;
    var $host;
    var $out;

    function mysql($username, $password, $database, $host)
    {
        $this->user = $username;
        $this->password = $password;
        $this->database = $database;
        $this->host = $host;
    }
    function connect()
    {
        $conn = mysql_connect($this->host, $this->user, $this->password, $this->database)
                or die("Error cannnot connect to mysql server");
        echo "Connected successfully to Mysql server";
    }
    function out()
    {
        mysql_close($this->out);
    }
}
$connect = new mysql('root','','test','127.0.0.1');
$connect->connect();
$connect->out();
?>


上述代码中有什么问题?

您需要关闭
$conn
。现在您正在关闭函数返回的任何内容。。。这是不对的。由于您只建立了一个连接,并且没有跟踪它,因此只需执行以下操作:

function out()
{
    mysql_close();
}

添加将db连接保存到对象实例变量的变量:

<?php
class mysql
{
    var $user;
    var $password;
    var $database;
    var $host;
    var $out;
    var $conn;

    function mysql($username, $password, $database, $host)
    {
        $this->user = $username;
        $this->password = $password;
        $this->database = $database;
        $this->host = $host;
    }
    function connect()
    {
        $this->conn = mysql_connect($this->host, $this->user, $this->password, $this->database)
                or die("Error cannnot connect to mysql server");
        echo "Connected successfully to Mysql server";
    }
    function out()
    {
        mysql_close($this->conn);
    }
}
?>


您需要将
$conn
变量存储在类中(例如作为
$this->conn
),然后调用
mysql\u close($this->conn)
mysql\u connect不将数据库名称作为参数。您必须使用mysql\u select\u db()来实现这一点

另外,使用$this->out代替$conn

因此,代码应该是:

 function connect()
    {
        $this->out = mysql_connect($this->host, $this->user, $this->password)
                or die("Error cannnot connect to mysql server");
        mysql_select_db($this->database) or die('Cannot select db');
        echo "Connected successfully to Mysql server";
    }

请考虑使用PDO和准备好的查询。它将有助于防止一些与注入相关的安全问题。实际上,他从未分配给
$this->out
,因此他试图关闭一个空变量