我有一个按钮,每当我单击该按钮时,都会从数据库信用(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函数,它将起作用!但是当我单击子菜单时也会减去功劳。还是应该在查询中添加“哪里”?
谢谢。
答案 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);
}