Раньше для соединения с базой данных использовались функции вида mysql_, которые на данный момент считаются устаревшими. В PHP7 их даже удалили.
На смену пришли функции вида mysqli_, которые ещё работают.
Более прогрессивный способ - использовать PDO. PDO - это объект и его можно использовать в ООП.
Простейшая конструкция соединения с базой данных.
<?php
try{
$pdo = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8', 'dbuser', 'mypassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$output = 'Соединение с базой данных установлено.';
}
catch (PDOException $e) {
$output = 'Не могу соединиться с базой данных: ' . $e;
}
include __DIR__ . '/templates/output.html.php';
?>
Вы указываете хост базы данных, имя базы данных, пользователя и пароль. В принципе, всё тоже самое. В успешном случае в переменную $output передаём строку об успешности соединения. При ошибке будет выброшено исключение. В сценарии загружается отдельная страница output.html.php.
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Скрипт</title>
</head>
<body>
<?php echo $output; ?>
</body>
</html>
Для вывода более точной информации в случае ошибки (имя файла, строка кода), можно немного переписать блок catch:
catch (PDOException $e) {
$output = 'Не могу соединиться с базой данных: ' .
$e->getMessage() . ' in ' .
$e->getFile() . ':' . $e->getLine();
}
Для запросов используется формат.
$pdo->exec($query)
В секции try после установки соединения, можем добавить запрос для создания таблицы.
$sql = 'CREATE TABLE mytable (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
sometext TEXT,
somedate DATE NOT NULL
) DEFAULT CHARACTER SET utf8 ENGINE=InnoDB';
$pdo->exec($sql);
$output = 'Таблица успешно создана';
Запрос для модификации записей в таблице. Метод exec возвращает число рядов таблицы, которые были использованы в результате запроса.
try{
$pdo = new PDO('mysql:host=localhost;dbname=mydb;charset=utf8', 'dbuser', 'mypassword');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
//$output = 'Соединение с базой данных установлено.';
$sql = 'UPDATE mytable SET somedate="2018-04-01"
WHERE sometext LIKE "%cat%"';
$affectedRows = $pdo->exec($sql);
$output = 'Обновлено строк: ' . $affectedRows;
}
При запросах с участием SELECT используется другой вариант, позволяющий получать ответы от запроса.
Вместо exec используется метод query, в котором указывается запрос в качестве параметра. Метод возвращает объект PDOStatement.