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