Sto ancora imparando principalmente dai libri che compro, ma oggi mi sembra che il mio libro sia vecchio anche se l'ho comprato quest'anno riguardo alla programmazione in PHP. Ora so che i comandi mysql_ * in PHP sono deprecati e dovrebbero essere sostituiti con istruzioni preparate e DOP più sicure e stabili. Così mi sono messo a riscrivere tutto il mio web in base ad esso e forse avrò bisogno di alcuni consigli da voi su come farlo correttamente e lavorando da voi tutti i ragazzi più esperti :)Come riscrivere correttamente il vecchio codice mysql-php con le funzioni mysql_ * deprecate?
Così inizierò la mia riscrittura solo con la parte principale (collegarsi a db e scegliere DB) qui (il resto posso fare da solo con google e manuali). Scriverò qui la mia vecchia sceneggiatura e ti chiederò se sto facendo tutto bene e non mi manca niente e spero che questo possa essere un buon manuale/risposta per le altre persone. Quindi iniziamo.
Così in config ho qualcosa di simile:
$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'animals');
che dovrebbe essere simile a questo:
$db = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');
Destra? Ma quando ho bisogno di scegliere il database più tardi dovrei farlo senza dbname=people;
? Ma come scegliere il database più tardi?
Ecco il mio unico e solo script per riscrivere, che è fondamentale nella maggior parte dei progetti web e spero che porterà non solo mi ha in qualche modo nuovo sistema DOP comprensione funziona davvero:
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);
}
}
}
Quindi, da quello che so da Google e Wiki - funzioni come public function __construct
e public function __destruct()
non dovrebbero essere più necessarie, giusto? Lo stesso con funzioni come public function connect()
COSÌ, solo che cosa è rimasto è public function selectDb($database)
ma non ho idea di come farlo correttamente senza danneggiare ogni connessione al database. Perché nel resto del mio codice (non menzionato qui) posso facilmente scegliere il database con questo codice: $this->db->selectDb("people");
Ma con le dichiarazioni preparate non so se questo sia possibile anche in modo semplice. Spero che alcuni consigli su questo argomento aiuteranno me e gli altri utenti a capire meglio questo nuovo codice. Altre parti del codice che potresti avere sono coniate in questo PDO Tutorial for MySQL Developers. Grazie.
** Woah! ** Super-duper-extra-speciale upvote per avere la temerarietà di aggiornare te stesso dal vecchio dinosauro * mysql_ * 'stanco! – rdlowrey