提交后未刷新变量


Variable not refreshing after submit

我有一个令牌系统,每次您提交表单时,它都会从您的总令牌中取-1。

我正在使用common.php

$ses_sql="Select * from users where name='testuser' and id='1'";
$result = $conn->query($ses_sql);
$row = $result->fetch_assoc();
$token = $row['tokens'];

因此,在菜单栏旁边,它可以查看您的总积分,这样无论您在哪个页面,您都可以看到它。

现在是形式部分。页面名称adduser.php

<? 
// Included on all pages.
include 'include/common.php';
echo $token; 
?>
<form method="post" action="adduser.php?save=all">
<input type="text" name="username">
</form>
<?
$kalk = $token - 1;
if (isset($_GET['save']) && $_GET['save'] == 'all'{
$sqllog = "UPDATE `reseller` set `tokens`='$kalk' where id='1'";
$check1 = mysqli_query($conn,$sqllog);
}
?>

所以,所有这些工作,完美。但请记住页面顶部的callout$token,这不是在提交后刷新,而是进入其他页面或刷新浏览器,值会更新。感谢您的帮助。

旁注编辑:这个答案基于OP的原始帖子https://stackoverflow.com/revisions/33807477/1和第二次修订https://stackoverflow.com/revisions/33807477/2并在发布后进行了编辑。


好的,我提交这个,因为我没有从OP的评论中得到任何其他反馈,也没有指出语法错误。

这行代码:

$sqllog = 'UPDATE `reseller` set `tokens`='$kalk' where id='1'";
          ^ single                                            ^ double

您的语句以单引号开头,然后以双引号结束。

错误检查会向您抛出语法错误消息。

  • http://php.net/manual/en/mysqli.error.php

并且需要读取为:

$sqllog = "UPDATE `reseller` set `tokens`='$kalk' where id='1'";
// or where id=1 but doubt that would make a difference.

并且已经完成

$check1 = mysqli_query($conn,$sqllog) or die(mysqli_error($conn));

以发出语法错误的信号。

"$token提交后不会刷新"

这是因为您需要自己刷新页面或使用重定向方法。

看看这个问答;堆栈上的A:

  • 如何在PHP中进行重定向

您还可以接受SQL注入。使用事先准备好的语句。

  • https://en.wikipedia.org/wiki/Prepared_statement

错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code

旁注:显示错误只能在暂存中进行,而不能在生产中进行。

附加调试工具:

  • var_dump()http://php.net/manual/en/function.var-dump.php
  • print_r()http://php.net/manual/en/function.print-r.php

并回复您的查询。

  • 还要确保您选择了正确的数据库/表/列