Невозможно вставить данные в базу данных MySQL через PHP - PullRequest
0 голосов
/ 17 января 2019

Я настраиваю панель мониторинга и мне нужно, чтобы пользователи могли просматривать историю своих сеансов в целях безопасности. Поэтому я решил создать базу данных и использовать PHP для вставки session_id(), CURRENT_TIMESTAMP и некоторых других переменных в таблицу, но по какой-то причине PHP и / или MySQL не могут INSERT значения в базе данных. Я могу читать и отображать данные из той же базы данных, но я не могу INSERT или UPDATE данные.

Сервер, на котором я работаю, работает под управлением Apache 2, PHP 7 и MySQL 5. Я пытался вставлять и обновлять данные в прошлом (и на других серверах), но всегда сталкиваюсь с этой проблемой.

$badge_number = $_SESSION['badge_number'];

$session_id = session_id();

$link = mysqli_connect('localhost', 'username', '*********', 'database');

   if (mysqli_connect_error()) {
        die("Cannot connect to database");
    }

    $query = "INSERT INTO `session_log` (`id`, `badge_number`, `session_id`, `session_start`, `session_end`, `session_length`) VALUES (NULL, $badge_number, $session_id, CURRENT_TIMESTAMP, NULL, 'regular')";

    $result = mysqli_query($link, $query);

    if (!$result) {
        die('Error code:' . mysqli_error());
    } else {
        header("Location: /overview?message=%3Cp%3E%3Cstrong%3ESuccess%21%3C/strong%3EYou%20have%20successfully%20logged%20in%20and%20inserted%20a%20new%20row%20in%20the%20session%20log%21%3C/p%3E&messagecolor=green&messageid=3942791098282");
    }

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

1 Ответ

0 голосов
/ 18 января 2019

Идентификатор сеанса является строкой, поэтому вам нужно добавить одинарную кавычку около $session_id к вашему SQL на стороне VALUES, например:

$badge_number = $_SESSION['badge_number'];

$session_id = session_id();

$link = mysqli_connect('localhost', 'username', '*********', 'database');

if (mysqli_connect_error()) {
    die("Cannot connect to database");
}

$query = "INSERT INTO `session_log` (`id`, `badge_number`, `session_id`, `session_start`, `session_end`, `session_length`) VALUES (NULL, $badge_number, '$session_id', CURRENT_TIMESTAMP, NULL, 'regular')";
//added single quotes around '$session_id' above on the VALUES side. 

$result = mysqli_query($link, $query);

if (!$result) {
    die('Error code:' . mysqli_error());
} else {
    header("Location: /overview?message=%3Cp%3E%3Cstrong%3ESuccess%21%3C/strong%3EYou%20have%20successfully%20logged%20in%20and%20inserted%20a%20new%20row%20in%20the%20session%20log%21%3C/p%3E&messagecolor=green&messageid=3942791098282");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...