Jak pomyślnie przepisać stary kod mysql-php z przestarzałymi funkcjami mysql_ *?

Nadal uczę się głównie z książek, które kupuję, ale dzisiaj staram się, że moja książka jest stara, mimo że kupiłem ją w tym roku, jeśli chodzi o programowanie w PHP. Teraz wiem, że polecenia mysql_ * w PHP są przestarzałe i powinny zostać zastąpione bardziej bezpiecznymi i stabilnymi przygotowanymi instrukcjami i PDO. Postanowiłem więc przepisać całą moją stronę zgodnie z nią i być może będę potrzebował od ciebie porad, jak to zrobić poprawnie i pracować z tobą bardziej doświadczonymi facetami :)

Zacznę więc przepisywać tylko z główną częścią (połącz się z bazą danych i wybierz DB) tutaj (resztę mogę zrobić sam z google i instrukcjami). Napiszę tu mój stary skrypt i zapytam, czy robię wszystko dobrze i niczego nie brakuje, i mam nadzieję, że może to być dobry podręcznik / odpowiedź dla innych ludzi. A więc zacznijmy.

Więc w konfiguracji mam coś takiego:

$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'animals');

Które powinny wyglądać tak:

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

Dobrze? Ale kiedy muszę później wybrać bazę danych, powinienem to zrobić bezdbname=people;? Ale jak wybrać bazę danych później?

Oto mój jedyny skrypt do przepisania, który jest podstawowy w większości projektów internetowych i mam nadzieję, że przyniesie mi to nie tylko zrozumienie, jak naprawdę działa nowy system 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); 
    }
  }  
}

Więc z tego co wiem z Google i Wiki - funkcje takie jakpublic function __construct ipublic function __destruct() nie powinno być już potrzebne, prawda? To samo z funkcjamipublic function connect() Tyle tylko zostałopublic function selectDb($database) ale nie mam pojęcia, jak to zrobić poprawnie, nie uszkadzając połączenia z bazą danych. Ponieważ w pozostałej części mojego kodu (niewymienionego tutaj) mogę łatwo wybrać bazę danych za pomocą tego kodu:$this->db->selectDb("people"); Ale z przygotowanymi oświadczeniami nie wiem, czy jest to możliwe w prosty sposób. Mam nadzieję, że kilka porad od ciebie pomoże mi i innym użytkownikom lepiej zrozumieć ten nowy kod. Inne części w kodzie, które możesz mieć, są w tym opisaneSamouczek PDO dla programistów MySQL. Dziękuję Ci.

questionAnswers(2)

yourAnswerToTheQuestion