Linking php with database

PHP: как подключиться к базе данных mySQL

PHP — это язык программирования на стороне сервера для обработки HTTP-запросов. К HTTP-запросам относятся:

  • GET — позволяет читать данные из того места, где они хранятся. Обычно это делается с помощью запроса к базе данных (MySQL).
  • POST — для отправки пользовательских данных, обычно, из HTML-формы. PHP позволяет получить доступ к глобальной переменной $_POST и сохранить ее значение. При этом сам PHP позволяет создавать, читать, обновлять, уничтожать БД.

Что же на самом деле происходит в процессе установки, что позволяет всем перечисленным компонентам работать вместе? Ведь если Apache и PHP, по сути, отдельные программы, то как они работают вместе над обслуживанием файла? Все просто: PHP-скрипт нужно настроить так, чтобы он подключился к базе данных SQL, прежде чем мы сможем использовать соответствующую базу данных (функция mysqli_connect).

Важно: обычно HTML-страница вызывает скрипт через пользовательскую форму ввода. И при непосредственном вводе данных как раз и происходит их добавление в базу данных. И тут должно быть соблюдено важное условие: они должны находиться на одном сервере и на одном домене. Таким образом, локальность всего программирования остается в силе.

Итак, резюмируем роли PHP и mySQL простыми словами:

  • PHP — как командир (программист пишет код и отдает указания языку, что и как делать).
  • MySQL — хранит информацию (как база данных).
  • Скрипт на PHP манипулирует, анализирует и создает новые данные на основе двух факторов: a) Пользовательские данные (которые в конечном итоге и попадают в базу данных). b) Данные, которые уже находятся в mySQL.
Читайте также:  Html rgb color with opacity

Как это работает

MySQL — это реляционная система управления базами данных, которая сочетает в себе стандарты SQL и функциональность РСУБД.

Вообще любой проект, независимо от его масштабов, может быть реализован с помощью MySQL. С помощью этой технологии БД можно управлять огромными объемами данных — без ущерба для их качества. Вы также можете использовать решения на базе PHP для веба — для организации доступа к огромным наборам данных из связанной или распределенной базы данных. PHP поддерживает множество баз данных, включая MySQL, MariaDB, MongoDB, Oracle и другие.

Подключение к БД с помощью PHP становится сверхважным: если скрипт не сможет подключиться к такой базе данных, запросы к ней будут неудачными.

Хорошей идеей при настройке БД является указание в начале скрипта:

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

Вернёмся к тому, как именно PHP подключается к БД. Так в PHP существует три метода подключения к MySQL через бэкенд:

Рассмотрим синтаксис для всех трёх вариантов ниже.

Синтаксис MySQLi, «процедурный» способ:

$link = mysqli_connect("hostname", "username", "password", "database");

Синтаксис: MySQLi, «объектно-ориентированный» способ:

$mysqli = new mysqli("hostname", "username", "password", "database");
$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");

Подключение к БД через функцию MySQLi

Учитывая все вышесказанное становится понятно: подключение PHP к базе данных MySQL — довольно простая задача.

Допустим, у нас есть БД со следующими данными:

  • Имя — test.
  • Имя хоста — localhost.
  • Имя пользователя — root.
  • Пароль — password.

Чтобы установить соединение с базой данных используем функцию mysqli_connect(). Например, вот так:

$connection = mysqli_connect('localhost','root','password','test');

Чтобы проверить, было ли соединение установлено успешно, используйте следующий код:

if ($connection->connect_error) < die("Connection failed"); >$connection = new mysqli('localhost','root','password');

Как сделать выборку данных по параметру + защита

На этом этапе у вас уже должен быть файл index.php. Но, если его нет — используйте шаблон, который мы дадим ниже:

Проверяем. Готово! Всё работает корректно. Теперь нужно будет выбрать данные.

Допустим, нам нужно сделать перебор на основе ассоциативного массива. Для этого создаём соответствующий запрос (выбор из определённой группы пользователей, по логинам) и прописываем перебор в цикле while. Код может быть таким:

// Обращаемся к таблице users $query = $pdo -> query('SELECT * FROM users'); // Перебираем массив while ($row = $query->fetch(PDO::FETCH_ASSOC)) < echo $row['login']."
"; >

Не забывайте, что выборку данных можно осуществлять не только по ассоциативным массивам, но и с помощью объектов (соответственно, PDO::FETCH_OBJ).

PHP — неотъемлемая часть бэкенд-разработки в 2023 году. Успей попасть в группу сегодня и получи профессию разработчика уже завтра!

Вернёмся к нашему примеру. Вывод, таким образом, даст нам список логинов пользователей, которые присутствуют в таблице.

Как выбрать данные по параметру

При необходимости можно создать выборку только по нужным данным в таблице. Например, как в этом случае:

(обратите внимание: в execute указаны замены для нескольких ключей и указываются такие замены в формате ‘ключ’ => значение)

$login = 'Sergei'; // Будет подставлено на месте :login // Теперь составляем запрос с нужным нам ключом $sql = 'SELECT * FROM users WHERE login = :login'; $query = $pdo -> prepare($sql); // Подготовка запроса // В кавычках — ключ из нашего запроса // Далее — значение-замена $query -> execute(['login' => $login]); // Перебор массива, но только с учётом наличия строк вида login = Sergei while ($row = $query->fetch(PDO::FETCH_ASSOC))

Существуют и другие способы выбрать данные по параметру, но вышеуказанный мы демонстрируем как самый удобный и читаемый.

Проверка соединения

Должна проводиться обязательно. Ведь множество факторов может привести к тому, что mySQL будет закрывать все попытки подключения: от некорректных параметров соединения до высоких пингов.

Чтобы проверить соединение с mySQL, используйте стандартную функцию mysqli_connect(). Вы сразу увидите удалось ли установить соединение, если же соединения не установлено — функция вернёт значение false.

Установка кодировки

Когда соединение установлено и предварительно всё функционирует корректно — сразу приступаем к установке кодировки, в противном случае можно получить кракозябры.

Чтобы установить кодировку UTF8 для MySQLi используйте стандартную конструкцию:

mysqli_set_charset($con, "utf8");

Заключение

В этом разделе подытожим основную информацию, которая пригодится начинающему программисту.

Что нужно знать

Чтобы успешно подключить PHP-скрипт к mySQL необходимо хотя бы базовое представление об этих технологиях (а также об MySQLi и PDO).

Что выбрать

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

Можно использовать любой из трех перечисленных выше подходов (mySQL, mySQLi, PDO).

Связка PHP и MySQL часто используется, когда нужна высокая читабельность кода и соответствие его заданной структуре.

Изучение обеих технологий может принести пользу в долгосрочной перспективе. Ну а чтобы пользы было ещё больше — успейте записаться на курс бэкенд-разработчик от Loft.

Источник

PHP Connect to MySQL

PHP 5 and later can work with a MySQL database using:

  • MySQLi extension (the «i» stands for improved)
  • PDO (PHP Data Objects)

Earlier versions of PHP used the MySQL extension. However, this extension was deprecated in 2012.

Should I Use MySQLi or PDO?

If you need a short answer, it would be «Whatever you like».

Both MySQLi and PDO have their advantages:

PDO will work on 12 different database systems, whereas MySQLi will only work with MySQL databases.

So, if you have to switch your project to use another database, PDO makes the process easy. You only have to change the connection string and a few queries. With MySQLi, you will need to rewrite the entire code — queries included.

Both are object-oriented, but MySQLi also offers a procedural API.

Both support Prepared Statements. Prepared Statements protect from SQL injection, and are very important for web application security.

MySQL Examples in Both MySQLi and PDO Syntax

In this, and in the following chapters we demonstrate three ways of working with PHP and MySQL:

MySQLi Installation

For Linux and Windows: The MySQLi extension is automatically installed in most cases, when php5 mysql package is installed.

PDO Installation

Open a Connection to MySQL

Before we can access data in the MySQL database, we need to be able to connect to the server:

Example (MySQLi Object-Oriented)

$servername = «localhost»;
$username = «username»;
$password = «password»;

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) die(«Connection failed: » . $conn->connect_error);
>
echo «Connected successfully»;
?>

Note on the object-oriented example above:

$connect_error was broken until PHP 5.2.9 and 5.3.0. If you need to ensure compatibility with PHP versions prior to 5.2.9 and 5.3.0, use the following code instead:

// Check connection
if (mysqli_connect_error()) die(«Database connection failed: » . mysqli_connect_error());
>

Example (MySQLi Procedural)

$servername = «localhost»;
$username = «username»;
$password = «password»;

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) die(«Connection failed: » . mysqli_connect_error());
>
echo «Connected successfully»;
?>

Example (PDO)

$servername = «localhost»;
$username = «username»;
$password = «password»;

try $conn = new PDO(«mysql:host=$servername;dbname=myDB», $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo «Connected successfully»;
> catch(PDOException $e) echo «Connection failed: » . $e->getMessage();
>
?>

Note: In the PDO example above we have also specified a database (myDB). PDO require a valid database to connect to. If no database is specified, an exception is thrown.

Tip: A great benefit of PDO is that it has an exception class to handle any problems that may occur in our database queries. If an exception is thrown within the try < >block, the script stops executing and flows directly to the first catch() < >block.

Close the Connection

The connection will be closed automatically when the script ends. To close the connection before, use the following:

Источник

Оцените статью