Подключение к базе данных, CRUD запросы

В этой статье мы рассмотрим, как вы можете использовать базу данных MySQL для выполнения операций CRUD (создания, чтения, обновления и удаления) с помощью PHP. Если вы хотите, вручную подключаться к базе данных в PHP, эта статья является отличной отправной точкой.

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

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

Сегодня мы рассмотрим основы подключения к базе данных в PHP, и мы будем использовать базу данных MySQL в качестве нашей базы данных. Давайте быстро рассмотрим, что будет в этой статье:

  • как настроить соединение с базой данных
  • как выбрать базу данных
  • как вставлять и обновлять записи
  • как получать записи
  • как удалять записи

Как настроить подключение к базе данных
В этом разделе мы обсудим, как вы можете установить соединение с базой данных с помощью расширения mysqli.

Существует два способа использования расширения mysqli, процедурного и объектно-ориентированного, но мы будем использовать процедурный способ в этом уроке, чтобы все было просто. Если вам интересно об объектно-ориентированном синтаксисе, дайте мне знать в разделе комментариев, и я буду рад ответить на вопросы.

Во-первых, давайте рассмотрим синтаксис функции mysqli_connect, который используется для настройки соединения с исходным кодом MySQL.

Функция mysqli_connect принимает четыре аргумента и возвращает объект соединения при успешном соединении. Давайте рассмотрим каждый аргумент:

  • MYSQL_HOSTNAME: это должно быть заменено на имя хоста или IP-адрес сервера MySQL. Если вы работаете с сервером MySQL в своей локальной системе, вы можете использовать localhost или 127.0.0.1.
  • MYSQL_USERNAME: имя пользователя вашего пользователя MySQL.
  • MYSQL_PASSWORD: пароль вашего пользователя MySQL.
  • MYSQL_DATABASE: база данных, к которой вы хотите подключиться.

После успешного соединения $connection_obj содержит объект соединения. При этом вы готовы запускать запросы к базе данных, которая была определена в аргументе MYSQL_DATABASE.

С другой стороны, если соединение не выполняется, мы можем отладить его, как показано в следующем фрагменте:

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
 
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
?>

Как выбрать базу данных
В предыдущем разделе мы обсудили, как настроить соединение с базой данных с помощью функции mysqli_connect. В этом разделе мы рассмотрим, как выбрать базу данных после успешного подключения к MySQL.

Конечно, как мы уже видели, вы всегда можете передать базу данных в четвертом аргументе самой функции mysqli_connect. Но есть и другой способ сделать это, если вы хотите изменить базу данных после подключения к MySQL. Вы можете использовать функцию mysqli_select_db для выбора базы данных для работы.

Давайте рассмотрим пример, приведенный в предыдущем разделе, чтобы узнать, как он может работать.

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}");
 
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
 
mysqli_select_db($connection_obj, "{MYSQL_DATABASE}");
?>

Как вы можете видеть, мы передали только три аргумента в функции mysqli_connect, и это должно дать нам успешное соединение с базой данных. Вместо передачи базы данных в четвертом аргументе мы выбираем базу данных с помощью функции mysqli_select_db.

Функция mysqli_select_db принимает два аргумента: объект подключения и базу данных, к которой вы хотите подключиться.

Как создавать (вставлять) и обновлять записи
В предыдущих разделах мы обсудили, как настроить соединение с MySQL и выбрать базу данных для работы. Теперь мы рассмотрим, как выполнять различные типы запросов по выбранной базе данных. Во-первых, давайте посмотрим, как вставлять и обновлять записи.

Если вы хотите следовать примерам, описанным в этой статье, вам нужно создать следующую таблицу MySQL в своей базе данных. Это таблица, которую мы собираемся использовать во всех примерах с этого момента.

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, представленных с использованием формы.

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
 
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
 
// initialize variables for the insert query
$name = 'John Smith';
$email = 'john.smith@yahoo.com';
$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_close для закрытия активного соединения.

Как обновить записи
В предыдущем разделе мы обсудили, как вы можете вставлять новые записи в таблицу MySQL. В этом разделе мы увидим, как вы можете обновить запись, которая уже существует в таблице.

Я предполагаю, что запись уже существует в таблице employee, а идентификатор этой записи — 1. В следующем примере мы собираемся обновить запись, которая имеет значение 1 в столбце id.

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
 
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
 
// initialize variables for the insert query
$id = 1;
$phone = '333-555-4444';
 
// prepare the insert query
$query = "UPDATE employee SET `phone` = '". mysqli_real_escape_string($connection_obj, $phone) ."' WHERE `id` = '". (int) $id ."'";
 
// 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.

Взгляните на следующий пример.

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
 
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    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:" . $row['id'] . "<br/>";
    echo "Name:" . $row['name'] . "<br/>";
    echo "Phone:" . $row['phone'] . "<br/>";
    echo "Email:" . $row['email'] . "<br/>";
    echo "<br/>";
}
 
// close the db connection
mysqli_close($connection_obj);
?>

Первое, что вам нужно сделать для извлечения записей из базы данных, — это выполнить запрос выборки с помощью функции mysqli_query. После успешного выполнения запроса select функция mysqli_query возвращает объект mysqli_result, и это то, что мы сохранили в переменной $result выше.

Затем мы перебираем результирующий набор, используя функцию 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_fetch_array, вы можете получить доступ к столбцам как $row[0], $row[1] и так далее. В нашем случае мы передали значение MYSQLI_BOTH, поэтому мы можем обращаться к столбцам в обоих направлениях. Если вы хотите получить доступ только к ассоциативным значениям, вместо этого вы можете использовать функцию mysqli_fetch_assoc.

В следующем и последнем разделе мы увидим, как удалять записи из базы данных.

Как удалить записи
В этом разделе мы увидим, как удалять записи из базы данных.

Взгляните на следующий пример.

<?php
$connection_obj = mysqli_connect("{MYSQL_HOSTNAME}", "{MYSQL_USERNAME}", "{MYSQL_PASSWORD}", "{MYSQL_DATABASE}");
 
if (!$connection_obj) {
    echo "Error No: " . mysqli_connect_errno();
    echo "Error Description: " . mysqli_connect_error();
    exit;
}
 
// initialize variables for the delete query
$id = 1;
 
// prepare the insert query
$query = "DELETE FROM employee WHERE `id` = '". (int) $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 для начинающих. Мы видели, как перейти от настройки подключения к базе данных для выполнения различных типов запросов.

Что могу еще добавить — это вопрос кодировки. После подключения можно установить кодировку соединения.

$link = mysqli_connect($servername, $username, $password, $dbname); 

if ($link === false) { 
    die("ERROR: Could not connect. "
                .mysqli_connect_error()); 
}else{ echo 'Ok! We are connected!<br/>';}

mysqli_set_charset($link,"utf8");

Запросы MYSQL:

  • SELECT
  • SELECT по встечающемуся слову
  • INSERT
  • UPDATE
  • DELETE
SELECT * FROM `oc_table` WHERE 1

SELECT * FROM oc_table WHERE text LIKE '%Sits%'

INSERT INTO `oc_table`(`id`, `attribut`, `language`, `text`) VALUES ([value-1],[value-2],[value-3],[value-4])

UPDATE `oc_table` SET `id`=[value-1],`attribute`=[value-2],`language`=[value-3],`text`=[value-4] WHERE 1

DELETE FROM `oc_table` WHERE 0

Ну и пример выборки из базы и вывод на экран.

<?php

$servername = "servername";
$username = "username";
$password = "password";
$dbname = 'dbname';

$link = mysqli_connect($servername, $username, $password, $dbname); 

if ($link === false) { 
    die("ERROR: Could not connect. "
                .mysqli_connect_error()); 
}else{ 
    echo 'Ok! We are connected!<br/>';
}

mysqli_set_charset($link,"utf8");

$sql = "SELECT * FROM oc_table WHERE text LIKE '%Sits%'";

$result = $link->query($sql);

while ($row = mysqli_fetch_array($result)) { 
   
   $product_id = $row['id'];
   $name = $row['name']; 
   
   echo $id." - ";
   echo $name.'<br/>';
                                
} 

 

Posted in PHP
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
× iOs app

To install this Web App in your iPhone/iPad press iOs sourse and then Add to Home Screen.