Todavía estoy aprendiendo principalmente de los libros que compro, pero hoy me doy cuenta de que mi libro es antiguo, aunque lo compré este año con respecto a la programación en PHP. Ahora sé que los comandos mysql_ * en PHP están en desuso y deberían ser reemplazados por declaraciones preparadas más seguras y estables y PDO. Así que me puse a reescribir toda mi web de acuerdo con ella y tal vez necesitaré algunos consejos de ustedes sobre cómo hacerlo correctamente y trabajando para ustedes todos los muchachos más experimentados :)¿Cómo reescribir con éxito el código mysql-php antiguo con las funciones mysql_ * obsoletas?
Entonces comenzaré mi reescritura solo con la parte principal (conectarse a DB y elegir DB) aquí (el resto lo puedo hacer solo con google y manuales). Escribiré aquí mi viejo guión y le preguntaré si estoy haciendo las cosas bien y sin perderme nada, y espero que este sea también un buen manual/respuesta para otras personas. Entonces comencemos.
Así que en la configuración que tienen algo como esto:
$db = new dbConn('127.0.0.1', 'root', 'pass', 'people', 'animals');
Cuáles deberían ser así:
$db = new PDO('mysql:host=127.0.0.1;dbname=people;charset=UTF-8', 'root', 'pass');
derecho? Pero cuando tengo que elegir la base de datos más tarde, ¿debo hacerlo sin dbname=people;
? ¿Pero cómo elegir la base de datos más tarde?
Aquí es mi primera y única secuencia de comandos para volver a escribir que es básico en la mayoría de los proyectos web y espero que traerá no sólo a mí de alguna manera nuevo sistema DOP comprender realmente funciona:
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);
}
}
}
Así que por lo que sé de Google y Wiki - funciones como public function __construct
y public function __destruct()
ya no deberían ser necesarias, ¿verdad? Lo mismo con funciones como public function connect()
SO lo único que queda es public function selectDb($database)
, pero no tengo idea de cómo hacerlo correctamente sin dañar toda la conexión a la base de datos. Porque en el resto de mi código (no mencionado aquí) puedo elegir fácilmente la base de datos con este código: $this->db->selectDb("people");
Pero con las declaraciones preparadas, no sé si esto es incluso posible de una manera fácil. Espero que algunos consejos acerca de esto nos ayuden a mí y a otros usuarios a entender mejor este nuevo código. Se explican otras partes en el código que puede tener en este PDO Tutorial for MySQL Developers. Gracias.
** ¡Woah! ** Voto especial super-dupero-extra-especial por tener la temeridad de mejorarte del viejo y cansado dinosaurio 'mysql_ *'! – rdlowrey