相关疑难解决方法(0)

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

我仍然主要从我买的书中学习,但今天我知道我的书已经老了,即使我今年买了关于PHP编程的书.现在我知道PHP中的mysql_*命令已被弃用,应该用更安全和稳定的预处理语句和PDO替换.所以我根据它自己重写了我的所有网页,也许我需要你的一些建议如何正确地做到这一点,并为你工作所有更有经验的人:)

所以我将在这里开始我的重写只有主要部分(连接数据库并选择数据库)(其余的我可以自己用google和手册).我会在这里写下我的旧剧本,并问你我是否正在做一切正确而且没有遗漏任何东西,我希望这也可以成为其他人的好手册/答案.让我们开始吧.

所以在配置中我有这样的东西:

$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'animals');
Run Code Online (Sandbox Code Playgroud)

这应该是这样的:

$db = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');
Run Code Online (Sandbox Code Playgroud)

对?但是当我需要选择数据库以后我应该没有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 …
Run Code Online (Sandbox Code Playgroud)

php mysql database deprecated

16
推荐指数
1
解决办法
3028
查看次数

依赖注入简单实现

在阅读完这个问题之后,我想知道是否有人可以帮助我了解如何使用这些PHP类正确实现依赖注入:

class DBClass
{
    private $mMysqli;
    function  __construct(mysqli $database)
    {
        $this->mMysqli=$database;
    }
    function __destruct()
    {
        $this->mMysqli->close();
    }

    public function listUsers()
    {
        $query='SELECT * FROM Utente;';
        $resultset=$this->mMysqli->query($query);
        while($row = $resultset->fetch_array(MYSQLI_ASSOC)) {
            echo $row['username'];
            echo $row['pwd'];
            echo "<br />\n";
        }

    }

    public function runQuery($query)
    {
        return $resultset=$this->mMysqli->query($query);
    }

    public function getConnection()
    {
        return $this->mMysqli;
    }
}
Run Code Online (Sandbox Code Playgroud)

会话类:

class Session
{
    private $_session;
    public $maxTime;
    private $database;

    public function __construct(DBClass $database)
    {
        $this->database=$database;
        $this->maxTime['access'] = time();
        $this->maxTime['gc'] = get_cfg_var('session.gc_maxlifetime');
        session_set_save_handler(array($this,'_open'),
                array($this,'_close'), …
Run Code Online (Sandbox Code Playgroud)

php oop design-patterns

4
推荐指数
1
解决办法
1852
查看次数

标签 统计

php ×2

database ×1

deprecated ×1

design-patterns ×1

mysql ×1

oop ×1