@echizon

Чистый php, если нет Бд, то можно ли её создать?

Добрый вечер, пишу на чистой пхп, обучение, использую виндов, опенсервер. Подключаюсь к готовому БД с таблицами.
$link = mysqli_connect($host, $user, $password, $database)
or die("Ошибка соединения с БД." . mysqli_error($link));
Возможные ошибки, нет соединение с БД, пароль не правильный, нет такого пользователя, и нет такой таблицы.
И вот если нет такой таблицы, можно же легко его создать, подскажите пожалуйста, как словить ошибку от mysqli_connect() и обработать его, пытаюсь в try{}catch($e){} но для $e нужно знать ошибку.
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
Fockker
@Fockker Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Можно, но код, который создает БД при ошибке - это глупость.
Так не делают.

Можно создать отдельный скрипт для настройки окружения, который создаст БД и таблицы например.
В этом скрипте просто не указывать 4-й параметр в mysqli_connect.
И дальше просто написать mysqli_query() c запросом создания таблицы.

Но в реальной жизни такие ситуации практически не встречаются.
В отличие от ламерского опенсервера, на реальных серверах никто никогда не ходит в базу под рутом. А у того пользователя, который используется, тупо нет прав на создание БД.

spoiler
И отучайтесь уже писать этот говнокод, or die("Ошибка соединения с БД." . mysqli_error($link));
он и так-то всегда был признаком профнепригодности, а в современном РНР уже и вовсе не имеет смысла
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mayton2019
Bigdata Engineer
Обычно эволюция кода идет синхронно с обновлением схем в БД. Для этого есть инструменты типа liquibase/flyway. Они приводят в БД в состояние полного синхронизма с вашим репозитарием кода. И то что у вас происходит (нет таблицы) - это ужас-ужас и надо срочно что-то менять в жизни.

Вот так. Развивайтесь. Взрослейте. Хватит уже бегать в детских штанишках. Хорошая система должна трекать свои изменния. Берите лучшие практики которые есть сегодня. Создание таблицы в секции catch - это опасная практика которая кроме того вызывает еще один парадоксальный вопрос из серии - а что делать если exception возник внутри секции exception и так далее.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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