0

可能重复:
关闭 mysql 连接 (PHP)

请帮助我,我不知道在哪里添加mysql_close($db) ;

查看我的代码:

<?php 

    class atsilipimai {

    private $db;

    public function __construct($host, $user, $password, $db) {

    $this->db = mysql_connect($host, $user, $password) or die('Couldn\'t connect to mysql');
    mysql_select_db($db) or die('Couldn\'t connect to db');
    }

    public function  addPost() {
    if ( isset($_POST['submit']) ) {
            $this->name = mysql_real_escape_string(addslashes($_POST['name']));
            $this->msg = mysql_real_escape_string(addslashes($_POST['msg']));
            $this->date = date("Y-m-d H:i:s");



            if (empty($this->name) || empty($this->msg)) {
                echo "<p>Please enter all details!</p>";
            } else {
                $sql = "INSERT INTO atsiliepimai (name, msg, date)";
                $sql .= " VALUES ('$this->name', '$this->msg', '$this->date')";
                mysql_query($sql) or die(mysql_error());

            }
        }
    }

    public function showPost() {
        //I'm not adding pagination, so it will only show last 5 posts.
        $sql = 'SELECT * FROM atsiliepimai ORDER BY id DESC LIMIT 5';
        $query = mysql_query($sql) or die('Couldn\'t get posts from database');
        while ( $row = mysql_fetch_array($query) ) {
            $this->name = htmlentities(stripslashes($row['name']));
            $this->msg = htmlentities(stripslashes($row['msg']));
            $this->date = htmlentities(stripslashes($row['date']));


            //Just add div's or what you want for the output.
            //Ip wont be added.
            echo "
            <h4>".$this->name."</h4>
            <p>".$this->msg."</p>
            <p class = 'data' >".$this->date."</p>
            <hr />
            ";

        }

    }

    public function __destruct() {



    }

    }
?>
4

3 回答 3

3

使用类不是 OOP。您没有关注点分离。您必须将数据库访问封装在自己的类中,并且可视化也应该分开。DB连接处理程序的关闭可以在destructorDB类中实现。但是在您的解决方案中,与数据库一起使用的每个对象都将拥有自己的连接处理程序,并且也将负责渲染,所以现在您的类只是一个命名空间......

于 2012-06-19T08:36:28.270 回答
1

你不应该在这里连接到你的数据库。您应该创建一个数据库类来处理与数据库的所有通信,打开 (in ) 和关闭 (in ) 连接应该在那里完成。您只需在需要数据库实用程序的任何其他类中创建和使用所述类的对象。_construct()_destruct()

于 2012-06-19T08:47:42.120 回答
1

从手册mysql_close

通常不需要使用 mysql_close(),因为非持久打开的链接会在脚本执行结束时自动关闭。

所以你不需要关闭它,除非你有一些特殊情况你需要终止连接然后把这个函数。

还请使用 mysqli_* 或 PDO 与数据库交互,因为 mysql_* 函数弃用进程已启动

于 2012-06-19T08:35:55.730 回答