我正在设置一个仪表板,出于安全目的,需要用户能够查看其 session 历史记录。所以我决定创建一个数据库并使用 PHP 将 session_id()
、CURRENT_TIMESTAMP
和一些其他变量插入表中,但由于某种原因 PHP 和/或 MySQL 是无法将值插入数据库。我能够从同一数据库读取和显示数据,但无法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");
}
我希望每次用户登录时都会在数据库中看到一个新行,但我不断收到此错误消息错误代码:
,它没有告诉我任何信息。
最佳答案
session ID 是一个字符串,因此您需要在 VALUES
一侧的 SQL 中将 $session_id
添加单引号,如下所示:
$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");
}
关于php - 无法通过 PHP 将数据插入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54241994/