Подключение к базе данных MySql, как правильно и современно?

Я в php, а соответственно и в mysql не очень пока силен.

Такой вопрос - как сейчас лучше всего и не "по устаревшему" подключаться к бд? Знаю 3 способа: mysql_connect, mysqli и PDO.
Ближайшие видео и статьи выложены более примерно 2ух лет назад. Везде говорится что тот метод устарел, тем никто не пользуется и т.д.
Так как все-таки правильнее, безопаснее подключаться к mysql в 2019 году?
Буду рад любой новой статье, видео, чему угодно.

И еще вопрос о шифровании данных, как их хранить в скрытом виде? Знаю можно использовать библиотеку RedBean, там есть шифрование, несколько собственных команд mysql. Но как лучше и опять же безопаснее?
  • Вопрос задан
  • 2540 просмотров
Решения вопроса 4
@FanatPHP
Вопрос хороший, но неправильно сформулирован.
Поскольку тут на самом деле два вопроса - какой драйвер использовать и уже потом - как правильно соединяться.
Ответ на первый вопрос очевиден. Если выбирать из mysql_connect, mysqli и PDO, то достаточно зайти на страницу мануала, посвященную каждому варианту, и посмотреть, что там написано. Ну или попробовать использовать в своем коде и посмотреть что получится.

А вот вопрос, как правильно подключаться в двух оставшихся вариантах, действительно важный, и ответ на него, как обычно, почти никто не знает, поскольку все друг у друга списывают статьи не 2-х, а 22-х летней давности. К счастью, есть сайты с актуальной информацией.

Теоретически, можно использовать mysqli. Но не нужно. Потому что это низкоуровневый драйвер и пользоваться им без подготовки очень неудобно. Но если вот прям так приспичило, то вот как правильно соединяться используя mysqli

Ключевые моменты:
- необходимо задавать режим выброса исключений
- необходимо задавать кодировку
- при подключении необходимо перехватывать исключение и выбрасывать его снова, чтобы в сообщении об ошибке не было логина и пароля.

Но правильным ответом, если выбирать из перечисленных трех, будет PDO. Здесь тоже не так просто, поэтому смотрим как правильно соединяться используя PDO - учитывая те же ключевые моменты, которые указаны выше.

Хорошим вариантом будет использовать высокоуровневую абстракцию типа redbean. Но поскольку нормальной документации по нему нет, а есть только пара хайповых видео, где он используется, причем без каких бы то ни было объяснений и разбора основ, то я бы рекомендовал редбин уже опытному разработчику, а не начинающему. Но в любом случае как в нем соединяться, написано в документации

Пароль в базе данных не шифруется а хэшируется. Делается это с посощью функции password_hash
Ответ написан
DevMan
@DevMan Куратор тега PHP
если вы планируете работать с базой напрямую, то пдо.
если планируете использовать более высокоуровневые абстракции/орм, то этим вопросом задаваться не стоит (они уже сами все реализовывают).
Ответ написан
Stalker_RED
@Stalker_RED
Отдельно про пароли:
Как ни странно, на офф-сайте есть неплохой мануал, где рассказано не только как правильнее, но и почему
https://www.php.net/manual/ru/faq.passwords.php
https://php.net/manual/ru/book.password.php
Ответ написан
BojackHorseman
@BojackHorseman Куратор тега PHP
...в творческом отпуске...
PDO и будет правильно.
а что вы собрались шифровать? данные в базе? траффик между клиентом и сервером?
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@NataliaCh
Лучше всего для новичков про PDO написано здесь: phpfaq.ru/pdo
Там же прекрасный класс для работы с Mysql, существенно упрщающий работу: phpfaq.ru/pdo/pdo_wrapper
Ответ написан
@phizik-pro
Друзья, вы советуете забывая про то что он новичок. Как думаете он знает что такое объект и сможет ли с ним работать? Не отпадет ли у него желание вообще что либо делать после частичного погружения в ООП? Мне кажется для начинающего выбор очевиден mysqli_connect. Говорить что тот или иной способ безопаснее я бы не стал, тем более для новичка, для безопасности нужно думать не о способе подключения. Сейчас работаю только с doctrine orm, но начинал как раз с того самого способа что из семёрки удалили. ООП постиг не сразу, было достаточно "больно", но на процедурке штамповал с легкостью. Всех сейчас толкают к ООП, тем самым убивая главный плюс php низкий порог входа
Ответ написан
@metajiji
Если коротко, то mysqli это современный способ, который использует pdo:) а следовательно pdo это предпочтительный, т.к. можно менять драйвер безболезненно. Ну и многие вещи там уже автоматизированы.
Ответ написан
zetamen
@zetamen
В поисках нового
Не знаю насчет правильно, но современно использовать какой-нибудь готовый велосипед. Для новичка это актуально вдвойне.

Для небольших проектов, например, подойдет Medoo: легкий, простой, с нормальной документацией.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы