Как добавить строки в базу данных?

Как я могу изменить код, чтобы каждая строка, вводимая в поле textarea, сохранялась в базе данных с уникальным идентификатором (ID)? Я предполагаю, что при добавлении списка ссылок каждая строка должна быть обработана отдельно и иметь свой собственный ID.
  • 15 ноября 2024 г. 13:13
Ответы на вопрос 2
Чтобы добавить строки из текстового поля (`textarea`) в базу данных с уникальным идентификатором (ID), вам нужно будет выполнить несколько шагов. Ниже приведен пошаговый план, как это можно сделать, на примере использования PHP и MySQL.

### Шаг 1: Подготовка базы данных

Создайте таблицу в вашей базе данных, которая будет хранить строки. Пример конструкции таблицы:

```sql
CREATE TABLE links (
    id INT AUTO_INCREMENT PRIMARY KEY,
    link VARCHAR(255) NOT NULL
);
```

### Шаг 2: HTML форма

Создайте форму с полем `textarea`, в которое пользователь сможет вводить ссылки:

```html
<form method="POST" action="add_links.php">
    <textarea name="links" rows="10" cols="30"></textarea>
    <br>
    <input type="submit" value="Добавить ссылки">
</form>
```

### Шаг 3: Обработка данных на сервере

Когда пользователь отправляет форму, вы можете обработать вводимые данные и сохранить каждую строку в базу данных. Пример кода на PHP (файл `add_links.php`):

```php
<?php
$servername = "localhost"; // адрес сервера
$username = "username"; // имя пользователя
$password = "password"; // пароль
$dbname = "database"; // имя базы данных

// Создание соединения
$conn = new mysqli($servername, $username, $password, $dbname);

// Проверка соединения
if ($conn->connect_error) {
    die("Ошибка соединения: " . $conn->connect_error);
}

// Получение данных из textarea
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $links = $_POST['links'];

    // Разделение строк по переносу строки
    $linkArray = explode("\n", $links);

    // Подготовка SQL запроса
    $stmt = $conn->prepare("INSERT INTO links (link) VALUES (?)");

    foreach ($linkArray as $link) {
        $link = trim($link); // Удаляем лишние пробелы
        if (!empty($link)) { // Проверяем, что строка не пустая
            $stmt->bind_param("s", $link); // Привязываем параметры
            $stmt->execute(); // Выполняем запрос
        }
    }

    $stmt->close(); // Закрываем подготовленный запрос
}

$conn->close(); // Закрываем соединение
?>
```

### Шаг 4: Показ результатов

Если вы хотите отобразить добавленные ссылки с их ID, вы можете добавить еще один запрос для получения всех ссылок после их добавления:

```php
$result = $conn->query("SELECT * FROM links ORDER BY id DESC");

if ($result->num_rows > 0) {
    echo "Добавленные ссылки:<br>";
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"] . " - Ссылка: " . $row["link"] . "<br>";
    }
} else {
    echo "Нет добавленных ссылок.";
}
```

Этот код описывает, как можно сохранить каждую строку из поля `textarea` в базе данных с уникальным идентификатором. Благодаря использованию метода `prepare` и `bind_param` мы можем избежать SQL-инъекций и сделать процесс более безопасным.
Получить данные из $_POST['Name'] 
Разбить в массив по разделителю \n (перевод строки)
В цикле внести данные в БД
Похожие вопросы