В этой статье мы рассмотрим, как можно использовать базу данных MySQL для выполнения операций CRUD (создание, чтение, обновление и удаление) с PHP. Если вы хотите испачкать руки подключением баз данных в PHP, эта статья станет отличной отправной точкой.
Если вы только начинаете работать с PHP, вы, вероятно, понимаете, что подключение к базе данных — это важная функция, с которой вам рано или поздно придется ознакомиться. В большинстве случаев база данных является основой любого веб-приложения и содержит данные приложения. Поэтому, как разработчику PHP, вы должны знать, как работать с базами данных.
В этой статье мы сделаем все просто и рассмотрим, как использовать основные функции mysqli. В следующих статьях этой серии мы рассмотрим несколько других способов подключения к базе данных.
Сегодня мы пройдемся по основам подключения к базам данных в PHP и будем использовать базу данных MySQL в качестве нашей базы данных. Давайте кратко рассмотрим, что мы рассмотрим в этой статье:
- как настроить соединение с базой данных
- как выбрать базу данных
- как вставить и обновить записи
- как получить записи
- как удалить записи
Я предполагаю, что у вас есть работающая установка PHP и MySQL и что вы знакомы с основами MySQL. Также вам необходимо убедиться, что расширение mysqli включено в вашей установке PHP, так как мы будем использовать его для выполнения операций с базой данных MySQL.
Если вы не уверены в расширении mysqli, вы можете проверить его с помощью функции phpinfo()
. В phpinfo()
вы можете проверить, есть ли раздел под названием mysqli . Вы также должны увидеть Mysqli Support | включенный заголовок, если расширение mysqli включено.
Есть также простой способ проверить это, используя интерфейс CLI. Вы можете запустить следующую команду, чтобы получить список всех расширений, которые включены в настройке PHP.
1
|
$php -m
|
Он должен напечатать список расширений, и если он содержит ключевое слово mysqli, расширение mysqli включено.
Теперь, когда мы настроены, давайте начнем создавать соединение с базой данных.
Как настроить соединение с базой данных
В этом разделе мы обсудим, как вы можете установить соединение с базой данных, используя расширение mysqli.
Есть два способа использовать расширение mysqli, процедурное и объектно-ориентированное, но в этом посте мы будем использовать процедурный способ, чтобы упростить задачу. Если вам интересен объектно-ориентированный синтаксис, дайте мне знать ваши вопросы в разделе комментариев, и я буду рад ответить на них.
Во-первых, давайте рассмотрим синтаксис функции mysqli_connect
, которая используется для установки соединения с серверной частью MySQL.
1
2
3
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}», «{MYSQL_DATABASE}»);
?>
|
Функция mysqli_connect
принимает четыре аргумента и возвращает объект соединения при успешном соединении. Давайте рассмотрим каждый аргумент:
-
MYSQL_HOSTNAME
: его следует заменить именем хоста или IP-адресом сервера MySQL. Если вы работаете с сервером MySQL в вашей локальной системе, вы можете использоватьlocalhost
или127.0.0.1
. -
MYSQL_USERNAME
: имя пользователя вашего MySQL. -
MYSQL_PASSWORD
: пароль вашего пользователя MySQL. -
MYSQL_DATABASE
: база данных, к которой вы хотите подключиться.
При успешном соединении $connection_obj
содержит объект соединения. Теперь вы готовы выполнять запросы к базе данных, которая была предоставлена аргументу MYSQL_DATABASE
.
С другой стороны, если соединение не установлено, мы можем отладить его, как показано в следующем фрагменте:
1
2
3
4
5
6
7
8
9
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}», «{MYSQL_DATABASE}»);
if (!$connection_obj) {
echo «Error No: » .
echo «Error Description: » .
exit;
}
?>
|
В следующем разделе мы увидим, как вы можете выбрать конкретную базу данных, используя объект подключения.
Как выбрать базу данных
В предыдущем разделе мы обсуждали, как установить соединение с базой данных с mysqli_connect
функции mysqli_connect
. В этом разделе мы рассмотрим, как выбрать базу данных после успешного подключения MySQL.
Конечно, как мы уже видели, вы всегда можете передать базу данных в четвертом аргументе самой функции mysqli_connect
. Но есть и другой способ сделать это на тот случай, если вы захотите изменить базу данных после подключения к MySQL. Вы можете использовать функцию mysqli_select_db
чтобы выбрать базу данных для работы.
Давайте пересмотрим пример, рассмотренный в предыдущем разделе, чтобы увидеть, как он может работать.
01
02
03
04
05
06
07
08
09
10
11
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}»);
if (!$connection_obj) {
echo «Error No: » .
echo «Error Description: » .
exit;
}
mysqli_select_db($connection_obj, «{MYSQL_DATABASE}»);
?>
|
Как видите, мы передали только три аргумента в функцию mysqli_connect
, и это должно дать нам успешное соединение с базой данных. Вместо передачи базы данных в четвертом аргументе мы выбираем базу данных с mysqli_select_db
функции mysqli_select_db
.
Функция mysqli_select_db
принимает два аргумента: объект подключения и базу данных, к которой вы хотите подключиться.
Как создавать (вставлять) и обновлять записи
В предыдущих разделах мы обсуждали, как настроить соединение MySQL и выбрать базу данных для работы. Теперь мы рассмотрим, как выполнять различные типы запросов к выбранной базе данных. Сначала давайте посмотрим, как вставлять и обновлять записи.
Если вы хотите следовать примерам, рассмотренным в этой статье, вам необходимо создать следующую таблицу MySQL в вашей базе данных. Это таблица, которую мы будем использовать во всех примерах.
1
2
3
4
5
6
7
|
CREATE TABLE `employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`phone` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
Выполнение вышеупомянутой команды в вашей базе данных MySQL должно создать таблицу employee
.
Как создавать записи
Для простоты мы инициализируем значения, которые необходимо вставить в таблицу employee в начале скрипта. Тем не менее, в большинстве случаев они будут поступать из пользовательского ввода в переменные $_POST
представленные с помощью формы.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}», «{MYSQL_DATABASE}»);
if (!$connection_obj) {
echo «Error No: » .
echo «Error Description: » .
exit;
}
// initialize variables for the insert query
$name = ‘John Smith’;
$email = ‘[email protected]’;
$phone = ‘541-754-1234’;
// prepare the insert query
$query = «INSERT INTO employee(`name`,`email`, `phone`)
VALUES (‘». mysqli_real_escape_string($connection_obj, $name) .»‘,'». mysqli_real_escape_string($connection_obj, $email) .»‘,'». mysqli_real_escape_string($connection_obj, $phone) .»‘)»;
// run the insert query
mysqli_query($connection_obj, $query);
// close the db connection
mysqli_close($connection_obj);
?>
|
В приведенном выше сценарии мы сначала инициализировали переменные, которые будем использовать в запросе вставки. Затем мы подготовили запрос вставки и присвоили его переменной $query
.
Важно отметить, что мы использовали функцию mysqli_real_escape_string
для экранирования строковых значений, которые мы собираемся использовать в запросе вставки. Вы должны использовать эту функцию, когда имеете дело со строковыми значениями, переданными через переменные $_POST
. Это гарантирует, что ваши пользователи не будут внедрять вредоносный код в ваши запросы к базе данных.
Наконец, мы запустили запрос вставки с mysqli_query
функции mysqli_query
. Функция mysqli_query
используется для запуска запроса к активной базе данных. Чтобы mysqli_close
итоги, мы использовали функцию mysqli_close
чтобы закрыть активное соединение.
Как обновить записи
В предыдущем разделе мы обсуждали, как вы можете вставить новые записи в таблицу MySQL. В этом разделе мы увидим, как вы можете обновить запись, которая уже существует в таблице.
Я предполагаю, что запись уже существует в таблице сотрудников, и идентификатор этой записи равен 1. В следующем примере мы собираемся обновить запись, которая имеет значение 1 в столбце идентификатора.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}», «{MYSQL_DATABASE}»);
if (!$connection_obj) {
echo «Error No: » .
echo «Error Description: » .
exit;
}
// initialize variables for the insert query
$id = 1;
$phone = ‘333-555-4444’;
// prepare the insert query
$query = «UPDATE employee SET `phone` = ‘».
// run the insert query
mysqli_query($connection_obj, $query);
// close the db connection
mysqli_close($connection_obj);
?>
|
Как видно из приведенного выше примера, мы хотим обновить phone
столбец таблицы employee
где id
равен 1. Это очень похоже на запрос вставки, за исключением того, что мы используем UPDATE
вместо INSERT
.
Как получить записи
До сих пор мы обсуждали, как вставлять и обновлять записи в таблице MySQL. В этом разделе мы увидим, как извлечь (извлечь) записи из таблицы MySQL.
Посмотрите на следующий пример.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}», «{MYSQL_DATABASE}»);
if (!$connection_obj) {
echo «Error No: » .
echo «Error Description: » .
exit;
}
// prepare the select query
$query = «SELECT * FROM employee»;
// execute the select query
$result = mysqli_query($connection_obj, $query) or die(mysqli_error($connection_obj));
// run the select query
while ($row = mysqli_fetch_array($result, MYSQLI_BOTH)) {
echo «ID:» .
echo «Name:» .
echo «Phone:» .
echo «Email:» .
echo «<br/>»;
}
// close the db connection
mysqli_close($connection_obj);
?>
|
Первое, что вам нужно сделать, чтобы получить записи из базы данных, — выполнить запрос select с mysqli_query
функции mysqli_query
. При успешном выполнении запроса mysqli_query
функция mysqli_query
возвращает объект mysqli result
, и это то, что мы сохранили в переменной $result
выше.
Далее мы перебираем набор результатов с mysqli_fetch_array
функции mysqli_fetch_array
в цикле while. Функция mysqli_fetch_array
извлекает одну строку за раз из набора результатов mysqli.
Функция mysqli_fetch_array
принимает два аргумента : объект результата и тип результата. Тип результата указывает, какой тип массива будет возвращен функцией mysqli_fetch_array
. Это может быть числовой, ассоциативный или оба. Это необязательный аргумент, и вы можете передать одно из этих трех значений : MYSQLI_ASSOC
, MYSQLI_NUM
или MYSQLI_BOTH
. MYSQLI_ASSOC
указывает, что вы хотите получить доступ к столбцам по их имени, а MYSQLI_NUM
указывает, что вы хотите получить доступ к столбцам по номеру столбца.
Если вы MYSQLI_NUM
значение MYSQLI_NUM
во втором аргументе функции mysqli_fetch_array
, вы сможете получить доступ к столбцам как $row[0]
, $row[1]
и т. Д. В нашем случае мы передали значение MYSQLI_BOTH
, поэтому мы можем получить доступ к столбцам обоими способами. Если вы хотите получить доступ только к ассоциативным значениям, вы можете использовать функцию mysqli_fetch_assoc
.
В следующем и последнем разделе мы увидим, как удалять записи из базы данных.
Как удалить записи
В этом разделе мы увидим, как удалять записи из базы данных.
Посмотрите на следующий пример.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
<?php
$connection_obj = mysqli_connect(«{MYSQL_HOSTNAME}», «{MYSQL_USERNAME}», «{MYSQL_PASSWORD}», «{MYSQL_DATABASE}»);
if (!$connection_obj) {
echo «Error No: » .
echo «Error Description: » .
exit;
}
// initialize variables for the delete query
$id = 1;
// prepare the insert query
$query = «DELETE FROM employee WHERE `id` = ‘».
// run the delete query
mysqli_query($connection_obj, $query);
// close the db connection
mysqli_close($connection_obj);
?>
|
Как видите, он работает почти так же, как запросы на вставку и обновление. Функция mysqli_query
выполняет запрос DELETE
, который в конечном итоге удаляет запись из таблицы employee
.
Вывод
В этой статье мы рассмотрели, как вы можете использовать базу данных MySQL с PHP. Эта статья была предназначена, чтобы предоставить вам базовые знания о подключении баз данных MySQL на PHP для начинающих. Мы увидели, как перейти от настройки соединения с базой данных к выполнению различных типов запросов.
Не стесняйтесь оставлять свои отзывы и запросы, используя канал ниже.