Я пытаюсь отобразить значение для этого: $supoints = $_SESSION['upoints'];
.Но отображаемое на странице значение не совпадает со значением в базе данных.
Это моя страница index.php:
<?php
session_start();
require 'dbpdo.php';
$sid = $_SESSION['userid'];
$supoints = $_SESSION['upoints'];
?>
<h3>index.php page</h3>
<?php echo $supoints; ?>
<form action="pointshand.php" method="post">
<input name="buycshamt">
<button type="submit" name="buyptsbut">Buy</button>
</form>
Все, что делает форма, это передает значение<input name="buycshamt">
в столбце таблицы моей базы данных upoints
.Моя таблица базы данных users
выглядит следующим образом:
userid | username | upass | upoints
1 | user1 | pass1 | 100
Она не будет совпадать, поскольку при первом входе пользователя значение для $supoints
равно 100
, ОДНАКО, когда пользователь вводитновое значение для <input name="buycshamt">
, например 300
, и сообщает, что это новое значение будет обновлено в таблице users
, но НЕ в переменной $supoints
.$supoints
останется как 100
на веб-странице, но в таблице он успешно обновится до 100 + 300, что равно 400
(то есть число, которое должно отображаться на веб-странице.Что вызывает такое поведение, которое препятствует обновлению значения для $supoints
?
Это мой pointshand.php, который вставляет входное значение в мою таблицу базы данных:
<?php
session_start();
require 'dbpdo.php';
if(isset($_POST['buyptsbut'])) {
$buycshamt = $_POST['buycshamt'];
$sid = $_SESSION['userid'];
$stmt = $pdo->prepare("UPDATE users2 SET upoints=upoints+? WHERE userid=?");
$stmt->bindParam(1, $buycshamt);
$stmt->bindParam(2, $sid);
$stmt->execute();
$stmt = null;
header('Location: index.php'); exit();
}
$pdo = null;
?>
И этомой signinhand.php, который регистрирует пользователя с переменными сеанса:
<?php
if (isset($_POST['login'])) {
require 'dbpdo.php';
$useremail = $_POST['useremail'];
$password = $_POST['password'];
if (!empty($useremail) || !empty($password)) {
$stmt = $pdo->prepare("SELECT userid, username, upoints, upass FROM users2 WHERE username=?");
$stmt->bindParam(1, $useremail, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
$sid = $row['userid'];
$sname = $row['username'];
$supoints = $row['upoints'];
$supass = $row['upass'];
}
$stmt = null;
$pwdCheck = password_verify($password, $supass);
if ($pwdCheck == true) {
session_start();
$_SESSION['userid'] = $row['userid'];
$_SESSION['username'] = $row['username'];
$_SESSION['upoints'] = $row['upoints'];
header("Location: index.php?login=success");
exit();
}
}
}
$pdo = null;
?>