减去点击按钮时的PHP

时间:2018-10-23 14:44:17

标签: php html mysql

我有一个按钮,每当我单击该按钮时,都会从数据库信用(MySQL)中扣除。我尝试了已经在另一个问题上回答过的所有问题,但仍然无法解决我的问题。

这是我的代码

<input type="submit" name="submit" value="Check" class="button_x" style="width:100px" >
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['submit']))
{
    func();
}
function func()
{
    $query = "UPDATE users SET user_credit = user_credit - 2";
    $result = mysqli_query($conn, $query);
}
?>

如果我不使用if函数,它将起作用!但是当我单击子菜单时也会减去功劳。还是应该在查询中添加“哪里”?

谢谢。

3 个答案:

答案 0 :(得分:1)

我认为您的问题是您实际上没有做POST,您的表格可能正在使用GET

另一件事是,您根本不需要检查$_SERVER['REQUEST_METHOD']。尝试以下代码:

if(isset($_GET['submit']))
{
    func();
}

如果上述方法可行,那么我的假设是正确的,您要么需要使用$_GET,要么将表格更改为使用$_POST

您可以通过在按钮周围的表单元素中添加$_POST来更改表单以使用method="POST"

<form method="POST">
    <input type="submit" name="submit" value="Check" class="button_x" style="width:100px">
</form>

如果上述方法无效,我怀疑您的$_SERVER['REQUEST_METHOD']变量某种程度上为空(可能与您的服务器有关),在这种情况下,以下方法应该有效:

if(isset($_POST['submit']))
{
    func();
}

您可以执行此操作的另一种方法是,不关心它是POST还是GET,方法是:

if(isset($_REQUEST['submit']))
{
    func();
}

答案 1 :(得分:0)

您是否将其放在<form>标签内? 像这样:

<form action="" method="post">
    <input type="submit" name="submit" value="Check" class="button_x" style="width:100px">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['submit']))
{
    func();
}
function func()
{
    $query = "UPDATE users SET user_credit = user_credit - 2";    
    $result = mysqli_query($conn, $query);
}

答案 2 :(得分:0)

您是否检查过要确保所使用的$ conn变量可在函数内部访问?由于我看不到您的其余代码,很难说,但是如果$ conn是在函数外部创建的,则无法从内部访问它。一种解决方案是要么在函数内部再次创建它,要么将其作为参数传递,例如:

func($conn);

function func($conn)
{
    $query = "UPDATE users SET user_credit = user_credit - 2";
    $result = mysqli_query($conn, $query);
}

Reference: What is variable scope, which variables are accessible from where and what are "undefined variable" errors?