оригинальная версия версия для слабовидящих контрастная версия выключить изображения включить изображения RSS FEED K2 NEWS
Воскресенье, 12 Июль 2020 15:20

Добавить новую строку в базу данных SQL

Вроде в сети Интернет уже масса мануалов на эту тему, однако мне вот многое оставалось непонятным, как только начинал «делать, как написано», желая писать «просто» о сложном, буду разбирать подробно, что и как.

У меня есть сервер с базой данных и мне необходимо создавать в этой базе «строки», к примеру, у меня есть интерес к 3-м столбцам, это, опять же, например – «имя ссылки», «адрес ссылки (URL)» и её «описание».

Следовательно, для начала надо создать эту самую таблицу в PhpMyAdmin (либо с помощью php-кода, но сейчас мы рассмотрим более простой вариант):

CREATE TABLE IF NOT EXISTS `test_links` (
`link_id` int(11) NOT NULL AUTO_INCREMENT,
`link_url` char(250) NOT NULL,
`link_name` char(250) NOT NULL,
`link_notes` varchar(2000) NOT NULL,
PRIMARY KEY (`link_id`)
)

На этом моменте я возьму паузу и обращу внимание на строку «AUTO_INCREMENT», «link_id» далее по тексту нигде встречаться не будет и в случае, если Вы будете создавать таблицу «руками», как бы забудете выставить этот параметр на link_id (A_I), или вовсе не добавите этот столбец. То при попытке создать новую строку, у Вас в первый раз строка добавится (поскольку таблица будет абсолютно пустой), а вот при повторной попытке Вы увидите следующую ошибку:

Duplicate entry '0' for key 'PRIMARY'

Которая говорит, что нулевая строка уже имеется и потому сделать запись – нет возможности. Автоинкремент создаёт «следующий» номер по порядку «за нас». В теории, можно было бы сделать иначе – сделать запрос в базу данных, узнать какой идентификационный номер «последний» и этому номеру сделать +1 = тем самым у нас в форме появилась бы ещё одна переменная, которую, пользователь бы скорее всего и не увидел, но разработчику пришлось бы писать лишний код.

Далее, нам понадобится «форма ввода», я не заморачиваюсь сейчас со стилями, поэтому, скорее всего смотреться всё это будет ущербно. Для начала, чтобы просто понять, как оно вообще работает, мы будет отталкиваться от вопроса «добавить новую строку» – и на этом всё, как эту строку потом редактировать, надеюсь, рассмотрим в следующем обзоре. Так вот, наша форма, будет выглядеть примерно так:

<table>
  <form action="test.php" method="POST">
    <tr><td>URL:</td><td><input type="text" size="20" name="link_url" ></td></tr>
    <tr><td>Имя:</td> <td><input type="text" size="20" name="link_name" ></td></tr>
    <tr><td>Описание:</td><td><input type="text" size="20" name="link_notes" ></td></tr>
    <tr><td colspan="2"><input type="submit" value="Новая строка..." name="submit" /></td></tr>
  </form>
</table>

Хочу сразу попросить прощения у хранителей истинной веры за использование тега table, во имя святого div’a не совершайте моего греха. Таблицу я вставил исключительно потому, что не пользуюсь стилями, так бы её здесь не было б сейчас.

Надеюсь, мне не придётся описывать значение каждого html-тега, как мне кажется, люди, знающие что такое «php» и «sql» (раз читают этот обзор) просто обязаны знать, что такое html и значение каждого тега.

И теперь нам необходим файл-обработчик, в коде выше форма ссылается на action="test.php" method="POST", соответственно, мне теперь жизненно необходимо сотворить этот самый test.php:

<?php
  mysql_connect ("сервер","логин ","пароль");
  mysql_select_db ("имя базы данных");
  mysql_query("SET NAMES utf8");

  if (isset($_POST['submit'])){
    $link_url = $_POST['link_url'];
    $link_name = $_POST['link_name'];
    $link_notes = $_POST['link_notes'];

    $query = "INSERT INTO test_links (link_url, link_name, link_notes)
        VALUES ('$link_url', '$link_name', '$link_notes')";
    $result = mysql_query($query) or die(mysql_error());
}
?>

Обычно, файлы обработчики выглядят иначе и код значительно больше, но громоздкий код приводит к тому, что у тех, кто «изучают» его(работают с ним) разбегаются глаза и они начинают думать, что всё сложно и непонятно и им никогда с этим кодом не разобраться. Дабы избежать таких мыслей – мы пойдём маленькими шажками.

Конкретно в этом коде файл-обработчик принимает данные из формы методом POST, в самом начале идёт подключение к базе данных, где необходимо "сервер", "логин ", "пароль" заменить на «Ваши» значения, если Вы работаете на локальной машине (виртуальный сервер типо денвера или Open Server) то вместо сервер пишете localhost, логин – admin, а пароль либо нет, либо какой у Вас стоит). В случае если работаете с удалённым – всё это ищете в панели управления сайтом.

Далее вопрос "имя базы данных", это не «test_links» созданная в начале, а именно та база в который Вы создавали эту самую таблицу «test_links».

Остальное уже попроще, «if isset» - если есть переменная (условие выполнено) – мы создаём 3 переменных, которые берут свои значения с тегов input (где имена тегов соответствуют указанным в коде), а после значение переменных передаётся в запрос ($query) команда INSERT (вставить) TO «test_links». Где значения (VALUES) указанные переменные. И «result» - выполнить запрос или не выполнить в случае ошибки.

Спонсоры: