Php 外函数问题
我编写了关闭mysql会话的函数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
<?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
,因此他试图关闭一个空变量