Как ввести дату в базу данных MySQL, используя PHP - PullRequest
1 голос
/ 01 апреля 2019

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

<?php //SETTING SESSION VARIABLES FOR ROUND 1 TEAMS AND SCORE

session_start();

  if (isset($_POST['go1'])) { // MATCHUP 1

    include_once 'dbcon.php';

    $_SESSION['t_team1'] = $_POST['team-1'];
    $_SESSION['t_team2'] = $_POST['team-2'];
    $_SESSION['s_score1'] = $_POST['score-1'];
    $_SESSION['s_score2'] = $_POST['score-2'];

    $team1winner = mysqli_real_escape_string($conn, $_POST['team-1']);
    $team2winner = mysqli_real_escape_string($conn, $_POST['team-2']);
    $date1 = mysqli_real_escape_string($conn, $_POST['date-1']);

    $sql = "INSERT INTO knockout (knockout_team1, knockout_team2, knockout_date)
    VALUES ('$team1winner', '$team2winner', '$date1');";

    header("Location: ../tables.php?tables=winner");
}

// дата html

<input type="date" name"date-1" value="date" class="date">

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Во-первых, вы помещаете команду SQL в строку, но фактически не выполняете команду.

Во-вторых, если вы выполняете команду, но не показываете ее здесь иdbcon.php файл работает нормально, тогда скорее всего проблема с форматом даты.

Наконец, вам нужно выполнить все ваши команды, особенно INSERT команды в подготовленных инструкциях, чтобы предотвратить SQL-инъекции winchОЧЕНЬ важно.

Вот как должен выглядеть ваш код:

<?php //SETTING SESSION VARIABLES FOR ROUND 1 TEAMS AND SCORE

    session_start();

    if (isset($_POST['go1'])) { // MATCHUP 1

    include_once 'dbcon.php';

    $_SESSION['t_team1'] = $_POST['team-1'];
    $_SESSION['t_team2'] = $_POST['team-2'];
    $_SESSION['s_score1'] = $_POST['score-1'];
    $_SESSION['s_score2'] = $_POST['score-2'];

    $team1winner = mysqli_real_escape_string($conn, $_POST['team-1']);
    $team2winner = mysqli_real_escape_string($conn, $_POST['team-2']);
    $date1 = mysqli_real_escape_string($conn, $_POST['date-1']);

    $TeamsStat = $conn->prepare("INSERT INTO knockout (knockout_team1, knockout_team2, knockout_date) VALUES (?, ?, ?)");

    $TeamsStat->bind_param("sss", $team1winner, $team2winner, $date1);   

    $TeamsStat->execute();
    $TeamsStat->close();

    header("Location: ../tables.php?tables=winner");
}

Где $conn - объект подключения к вашей базе данных.

Поскольку подготовленные операторы не поддерживают тип даты и поскольку дата не является свободным входным значением, столбец knockout_date должен быть строкой, а переменная $date1 также должна быть строкой.

Надеюсь, что это помогло вам.

0 голосов
/ 01 апреля 2019

Формат даты в HTML имеет тип dd-mm-yyyy, но при вставке его в базу данных необходимо убедиться, что он имеет тип YYYY-mm-dd.Поэтому убедитесь, что вы конвертируете его Перед тем, как вставить его

Пример:

  $originalDate = $yourDateVariable;
  $newDate = date("d-m-Y", strtotime($originalDate));

Или пройдите руководство и найдите альтернативные функции для его конвертации

...