Я все еще участвую в основном из книг, которые покупаю, но сегодня я стараюсь, чтобы моя книга была старой, хотя я купил ее в этом году в отношении программирования на PHP. Теперь я знаю, что команды mysql_ * на PHP устарели и должны быть заменены более безопасными и стабильными подготовленными операторами и PDO. Поэтому я поставил себе переписать всю свою сеть в соответствии с ней, и, может быть, мне понадобятся некоторые советы от вас, как это сделать правильно и работать у вас все более опытные ребята:)
Итак, я начну переписывать только основную часть (подключитесь к db и выбирая DB) здесь (остальное я могу сделать самостоятельно с помощью google и руководств). Я напишу здесь свой старый script и спрошу вас, делаю ли я все правильно и ничего не пропускаю, и надеюсь, что это может быть хорошим руководством для других людей. Итак, давайте начнем.
Итак, в config у меня есть что-то вроде этого:
$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;
? Но как выбрать базу данных позже?
Вот мой единственный и единственный script для перезаписи, который является основным в большинстве веб-проектов, и я надеюсь, что это принесет мне не только понимание того, как действительно работает новая система 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);
}
}
}
Итак, из того, что я знаю из Google и Wiki, функции, такие как public function __construct
и public function __destruct()
, больше не нужны, не так ли? То же самое с такими функциями, как public function connect()
SO, только что осталось public function selectDb($database)
, но я понятия не имею, как это сделать правильно, без ущерба для всего соединения с базой данных. Потому что в остальной части моего кода (не упоминается здесь) я легко могу выбрать базу данных по этому коду: $this->db->selectDb("people");
Но с подготовленными утверждениями я не знаю, возможно ли это даже в том случае, если это возможно. Надеюсь, некоторые советы по этому поводу помогут мне и другим пользователям лучше понять этот новый код. Другие части кода, которые могут возникнуть в этом PDO Tutorial для разработчиков MySQL. Спасибо.