На частные вопросы ответили в комментариях, поэтому ответим на вопрос из заголовка.
Чтобы соединить сайт с mysql, в РНР вообще-то есть
два API - mysqli и PDO. Несколько лет назад с mysqli вообще невозможно было нормально работать, но на данный момент они выровнялись, хотя PDO все равно удобнее, по трем причинам
- Единый интерфейс при работе с различными СУБД (неактуально, если mysql для нас является синонимом слова база данных)
- Набор функций-хелперов для получения данных из БД в различных форматах (при желании легко воспроизводится вручную)
- Именованные плейсхолдеры (для некоторых это главная причина использовать PDO)
Но в целом, как я говорил выше, сейчас можно использовать любое API. Главное - не использовать тот древний говнокод, который приведён в вопросе.
1. Создаём файл`config.sample.php` куда кладем все настройки приложения, в том числе базы данных
return [
'db' => [
'host' => '127.0.0.1',
'username' => '',
'password' => '',
'dbname' => '',
'port' => 3306,
'charset' => 'utf8mb4',
],
];
2. В файле, который включается во все скрипты сайта, добавляем код
if (!file_exists('config.php'))
{
throw new \Exception('Create config.php based on config.sample.php');
}
$config = require 'config.php';
3. И дальше в этом же файле пишем собственно
нормальный код подключения к БД
либо к mysqli
// включаем режим информирования об ошибках
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
// подключаемся к серверу
$dbc = $config['db'];
$db = new \mysqli($dbc['host'], $dbc['username'], $dbc['password'], $dbc['dbname'], $dbc['port']);
// не забываем установить кодировку, чтобы не было ошибок с кракозябрами
$db->set_charset($dbc['charset']);
либо к PDO
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$dbc = $config['db'];
$dsn = "mysql:host=$dbc[host];dbname=$dbc[dbname];charset=$dbc[charset];port=$dbc[port]";
$pdo = new \PDO($dsn, $dbc['username'], $dbc['password'], $options);
После того как будет освоена работа с системой контроля версий (а по-хорошему это надо было сделать уже давно) добавляем config.php в файл .gitignore
Таким образом на каждом хосте, где исполняется этот код, будет собственный файл с настройками, создаваемый по образцу из config.sample.php
Да, и
Очень Важное Дополнение:
почему нельзя сделать 1 соединение для сайта и не тратить каждый раз время на коннект к БД?
Никогда не следует переживать по поводу воображаемых проблем. Вот только когда создание коннекта каждый раз станет реальной проблемой, только тогда и начинать переживать по этому поводу и искать пути решения (спойлер: никогда).