如何使用已弃用的mysql_*函数成功重写旧的mysql-php代码?
我仍然主要从我买的书中学习,但今天我承认我的书已经很旧了,尽管我今年买了它关于PHP编程的书。现在我知道PHP中的mysql_*命令已被弃用,应该替换为更安全,更稳定的预准备语句和PDO。所以我让自己根据它重写我所有的网络,也许我需要一些建议,从你那里如何正确地做到这一点,并从你们所有更有经验的家伙:)
因此,我将在这里仅从主要部分(连接到db并选择DB)开始重写(其余的我可以用谷歌和手册自己完成)。我会在这里写下我的旧脚本,并问你是否做对了一切,没有遗漏任何东西,我希望这也可以成为其他人的一些好的手册/答案。让我们开始吧。
所以在配置中,我有这样的东西:
$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'animals');
这应该是这样的:
$db = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');
右?但是当我以后需要选择数据库时,我应该在没有数据库的情况下这样做吗?但是以后如何选择数据库呢?dbname=people;
这是我唯一要重写的脚本,这是大多数Web项目的基本脚本,我希望它不仅能让我了解新的PDO系统是如何工作的:
class dbConn
{
public function __construct($server, $user, $pass, $db_people, $db_animals)
{
if (!empty($server) && !empty($user) && !empty($pass) && !empty($db_people) && !empty($db_animals))
{
$this->server = $server;
$this->user = $user;
$this->pass = $pass;
$this->db_people = $db_people;
$this->db_animals = $db_animals;
$this->connect();
}
else
{
die("Set up connection to db");
}
}
public function connect()
{
$this->conn = mysql_connect($this->server, $this->user, $this->pass) or die ('cannot connect to MySQL');
}
public function selectDb($database)
{
switch($database)
{
case 'people':
mysql_select_db($this->db_people, $this->conn) or die ('cannot connect to database '.$this->db_people.'.');
mysql_query("SET NAMES 'utf8'");
break;
case 'animals':
mysql_select_db($this->db_animals, $this->conn) or die ('cannot connect to database '.$this->db_animals.'.');
mysql_query("SET NAMES 'utf8'");
}
}
public function __destruct()
{
if (!empty($this->conn))
{
mysql_close($this->conn);
}
}
}
因此,根据我从Google和Wiki中了解到的情况 - 功能就像并且不应该再需要了,对吧?与SO这样的函数相同,只有剩下的是什么,但我不知道如何正确执行此操作,而不会阻止与数据库的所有连接。因为在我的代码的其余部分(这里没有提到),我可以通过以下代码轻松选择数据库:但是对于预准备语句,我不知道这是否以简单的方式实现。我希望您在这方面的一些建议能够帮助我和其他用户更好地理解这个新代码。您可能拥有的代码中的其他部分在此面向MySQL开发人员的PDO教程中进行了说明。谢谢。public function __construct
public function __destruct()
public function connect()
public function selectDb($database)
$this->db->selectDb("people");