为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用不推荐使用的mysql_ *函数成功重写旧的mysql-php代码?

如何使用不推荐使用的mysql_ *函数成功重写旧的mysql-php代码?

小怪兽爱吃肉 2019-12-04 12:52:14
我仍然主要从所购买的书中学习,但是今天我提醒我,尽管我今年购买了有关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 __construct与public function __destruct()不应该需要了,对不对?与public function connect()SO之类的功能相同,只剩下什么,public function selectDb($database)但是我不知道如何正确执行此操作而不破坏所有与数据库的连接。因为在我的其余代码(此处未提及)中,我可以通过此代码轻松选择数据库:$this->db->selectDb("people");但是,使用准备好的语句,我什至不知道这样做是否可行。希望您提出一些建议,以帮助我和其他用户更好地理解此新代码。您可能拥有的代码中的其他部分在此MySQL开发人员的PDO教程中进行了说明。谢谢。
查看完整描述

2 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我认为在应用程序内部切换数据库的最简单方法是:


$pdo_instance->query("USE people");


$pdo_instance->query("USE animals");

或者更好(更清洁)的方式可能是


$db_people = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');


$db_animals = new PDO('mysql:host=127.0.0.1;dbname=animals;charset=UTF-8', 'root', 'pass');

如果您将班级中的数据库标记为活动数据库,则可以使用$db_people->query()或来访问数据$db_animals->query()。


查看完整回答
反对 回复 2019-12-04
  • 2 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信