我仍然主要从我购买的书中学习,但今天我发现我的书很旧,尽管我今年在PHP中编写了这本书。现在我知道PHP中的mysql_ *命令已被弃用,应该用更安全稳定的准备语句和PDO替代。所以我自己根据它重写所有的网页,也许我会需要一些建议,你如何做到正确,并从你工作,所有更多的经验丰富的家伙:)
所以我将只在主要部分(连接数据库并选择数据库)开始我的重写(其余的我可以用google和手册自己做)。我会在这里写我的老脚本,问你是否正在做一切正确,没有丢失任何东西,我希望这可以是一些很好的手册/其他人的答案。所以让我们开始吧
所以在配置我有这样的东西:
$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);
}
}
}
所以从我和谷歌知道的知识和维基 – 功能像public function __construct和public function __destruct()不再需要了,对吧?同样的功能像public function connect()SO只剩下的是public function selectDb($ database),但是我不知道如何正确执行,而不会损坏所有与数据库的连接。因为在我的代码的其余部分(这里没有提到),我可以通过这个代码轻松地选择数据库:$ this-> db-> selectDb(“people”);但是,在准备的声明中,我不知道这是否可以以简单的方式进行。我希望有关这方面的一些建议可以帮助我和其他用户更好地理解这个新代码。您可能有的代码中的其他部分在本PDO Tutorial for MySQL Developers中有所帮助。谢谢。