【发布时间】:2022-01-01 08:44:18
【问题描述】:
我有一个重置按钮,它实质上将此处的 JSON 数据替换为另一个名为 defaultStats.json 的数据集(我已存储以供使用)。这是当前数据库的样子:
而我的按钮代码是这样的:
<form method="post">
<input type="submit" name="resetButton" class="btn btn-outline-danger" value="Reset" />
</form>
而我的 PHP 函数是这样的:
<?php
function resetButton(){
$file = file_get_contents('defaultStats.json');
$email = isset($_SESSION['email'])? $_SESSION['email'] : '';
$sql = "INSERT INTO `users` (`data`) VALUES ('$file') WHERE `email`='$email'; ";
}
if(array_key_exists('resetButton',$_POST)){
resetButton();
}
?>
我不确定为什么或什么不能正常工作,或者是否有更简单的方法。我没有用我的按钮正确调用函数吗?还是实际功能无法正常工作?数据位于名为“users”的表中,我想替换已登录用户电子邮件的 json 文件。
编辑: 我已经更改了我的 PHP 代码,但它仍然无法正常工作,echo 也没有对我的网页做任何事情。它只是刷新。
<?php
if(isset($_POST['resetButton'])){
echo 'hello world';
}
?>
【问题讨论】:
-
你做了什么调试?您可以轻松地在函数内放置一个 echo 以查看该函数是否已执行。我能看到的主要问题是你声明了你的 sql 查询,但你从来没有真正将它发送到数据库
-
您尚未发布您的架构,但如果您将 JSON 数据存储在
VARCHAR或类似列中,这是一个非常糟糕的主意。考虑使用JSON数据类型,或者更好地正确规范您的架构。 -
@ADyson 我已经编辑了帖子以包含我一直在尝试的一些新代码。我接受了你的建议。见帖子底部。
-
为了使 SQL 语句对您的数据库产生影响,应该运行它。在您的函数
resetButton中,您只需声明SQL 语句。如果该函数是class的一部分(即:method),那么它可能有权访问数据库连接对象 - 否则您将需要创建数据库连接的新实例或传递数据库conn 变量可以作为函数内的global或作为参数。其本质是你必须实际执行sql命令! -
另外 -
insert子句不使用where子句,您希望插入/更新等的任何数据都应使用prepared statements完成(为了所有安全)