Как вставить значения под одним и тем же идентификатором, но разные значения столбца?

0

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

    +------+----+
    |id|JAN||FEB|
    +------+----+
    |1 |  1||  5|
    +------+----+
    |2 |  8|| 12|
    +------+----+
    |3 | 15|| 19|
    +------+----+
    |4 | 22|| 26|
    +------+----+


<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "epi";

$conn = new mysqli($servername, $username, $password, $dbname);

if (!$conn) 
{
  die('Could not connect: ' . mysql_error());
}

$number_of_dates = 4;
$startDate_Jan = strtotime("2018-01-01");
for ($i = 0; $i <= $number_of_dates; $i++)
{
    $date = strtotime("Monday +" . ($i * 1) . ' weeks', $startDate_Jan);
    $month=date('m', $date).PHP_EOL;
    $datex=date('d', $date).PHP_EOL;
    $intmonth = intval($month);
    $intdate = intval($datex);

    echo $intdate;
    echo "<br>";

    $sql="INSERT INTO testdata (ID_DATE, EPI_DATE_JAN) VALUES ('','$intdate')";
    $result = mysqli_query($conn, $sql);
}

$number_of_dates = 4;
$startDate_Feb = strtotime("2018-02-01");
for ($i = 0; $i <= $number_of_dates; $i++)
{
    $date = strtotime("Monday +" . ($i * 1) . ' weeks', $startDate_Feb);
    $month=date('m', $date).PHP_EOL;
    $datex=date('d', $date).PHP_EOL;
    $intmonth = intval($month);
    $intdate = intval($datex);

    echo $intdate;
    echo "<br>";

    $sql="INSERT INTO testdata (ID_DATE, EPI_DATE_FEB) VALUES ('','$intdate')";
    $result = mysqli_query($conn, $sql);
}
$conn->close();
?>

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

  • 0
    для первых 4 вам нужно вставить, а для остальных вам нужно обновить ..
  • 0
    не могли бы вы привести пример?
Теги:
for-loop
loops

1 ответ

0
Лучший ответ

Если в вашей таблице всего 4 строки, а ID_DATE - номер недели, вы можете использовать UPDATE во втором цикле, как показано ниже:

// second loop:
$week = $i+1;
$sql="UPDATE testdata set EPI_DATE_FEB = $intdate WHERE ID_DATE=$week";
$result = mysqli_query($conn, $sql);

Таким образом, второй цикл может быть:

$number_of_dates = 4;
$startDate_Feb = strtotime("2018-02-01");
for ($i = 0; $i <= $number_of_dates; $i++)
{
    $date = strtotime("Monday +" . ($i * 1) . ' weeks', $startDate_Feb);
    $month=date('m', $date).PHP_EOL;
    $datex=date('d', $date).PHP_EOL;
    $intmonth = intval($month);
    $intdate = intval($datex);

    echo $intdate;
    echo "<br>";

    $week = $i+1;
    $sql="UPDATE testdata SET EPI_DATE_FEB=$intdate WHERE ID_DATE=$week";
    $result = mysqli_query($conn, $sql);
}

Но даже лучше использовать подготовленные запросы.

  • 0
    да, это возможно но это только на два месяца. Но мне это нужно на 12 месяцев, а на другой день, а также на некоторые условия, которые могут возникнуть в одном файле. Есть ли альтернативный способ? в любом случае, спасибо.
  • 0
    @Jubayer Хорошо. Понимаю. У вас есть только 4 строки в этой таблице? Или вы могли бы добавить столбец «неделя» (от 1 до 4)?
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню