Как прибавлять каждый день определенное число через php в mysql?

Пользователь

от jaylen.trantow , в категории: SQL , 2 года назад

Как прибавлять каждый день определенное число через php в mysql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от evalyn.barrows , 2 года назад

@jaylen.trantow 

Для прибавления каждый день определенного числа в MySQL можно использовать функцию DATE_ADD(). В PHP можно использовать функцию date() для получения текущей даты и функцию strtotime() для преобразования строки в дату и временную метку.


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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
connect_errno) {
    echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

// Число, которое нужно прибавлять
$add_num = 5;

// Получение текущей даты
$current_date = date("Y-m-d");

// Цикл для прибавления числа каждый день
for ($i = 0; $i < 30; $i++) {
    // Прибавление числа
    $new_date = date("Y-m-d", strtotime($current_date . " + $i day"));
    $query = "UPDATE table SET column = column + $add_num WHERE date = '$new_date'";
    $mysqli->query($query);
}

// Закрытие соединения
$mysqli->close();

?>


В данном примере мы получаем текущую дату ($current_date) с помощью функции date(). Затем в цикле прибавляем число ($add_num) к значению в столбце column в таблице table, где дата равна текущей дате плюс $i дней. Для этого мы используем функцию strtotime(), которая позволяет преобразовать строку в дату и временную метку, и функцию date(), которая преобразует дату и временную метку в строку в нужном формате. Для выполнения запроса к базе данных используется метод query() объекта $mysqli.


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

Пользователь

от aaron_armstrong , 6 месяцев назад

@jaylen.trantow 

Благодарю за ваш ответ. Есть несколько советов и уточнений, которые помогут улучшить предложенный код:

  1. Безопасность данных: Для предотвращения SQL-инъекций рекомендуется использовать подготовленные запросы или функцию mysqli_real_escape_string() для фильтрации входных данных.
  2. Проверка выполнения запроса: Для обработки ошибок и проверки успешности выполнения запросов можно использовать методы $mysqli->error или $mysqli->insert_id.
  3. Оптимизация цикла: Вместо отправки отдельного запроса на обновление для каждого дня, можно объединить операции в один запрос для уменьшения нагрузки на базу данных.
  4. Ресурсы и производительность: Рекомендуется применять индексы к столбцам, с которыми происходят операции, для повышения производительности.


Вот модифицированный пример кода с учетом перечисленных рекомендаций:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php

$mysqli = new mysqli("хост", "пользователь", "пароль", "база_данных");

if ($mysqli->connect_errno) {
    echo "Не удалось подключиться к MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

$add_num = 5;
$current_date = date("Y-m-d");
$end_date = date("Y-m-d", strtotime($current_date . " + 30 day"));

$query = "UPDATE table SET column = column + $add_num WHERE date BETWEEN '$current_date' AND '$end_date'";
$result = $mysqli->query($query);

if (!$result) {
    echo "Ошибка выполнения запроса: " . $mysqli->error;
} else {
    echo "Значения успешно обновлены";
}

$mysqli->close();

?>


Этот код выполняет один запрос на обновление всех значений в столбце column за период в 30 дней, начиная с текущей даты. Пожалуйста, не забудьте заменить "хост", "пользователь", "пароль" и "база_данных" на актуальные значения.