如何根据按钮单击调用此 php 函数?
Posted
技术标签:
【中文标题】如何根据按钮单击调用此 php 函数?【英文标题】:How can I call this php function based on button click? 【发布时间】: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
完成(为了所有安全)
【参考方案1】:
我并不是说你必须这样做,而是你可以这样做(尽管它仍然完全未经测试/调试)!
if( $_SERVER['REQUEST_METHOD']=='POST' && isset( $_POST['resetButton'] ) && $_POST['resetButton']=='Reset' )
$dbhost = 'xxx';
$dbuser = 'xxx';
$dbpwd = 'xxx';
$dbname = 'xxx';
$db=new mysqli( $dbhost, $dbuser, $dbpwd, $dbname );
function resetButton( $db=false )
if( $db )
$file = file_get_contents( 'defaultStats.json' );
$email = $_SESSION['email'] ?: 'none@none.com';
$sql='insert into `users` ( `data`, `email` ) values ( ?, ? )';
$stmt=$db->prepare( 'ss', $file, $email );
$stmt->execute();
$stmt->close();
return true;
return false;
$status=resetButton( $db );
exit( $status );
【讨论】:
谢谢教授。我在这里发现的唯一错误是 $stmt=$db->prepare,其中 $db 专门抛出了这个错误:“Expected type 'object'. Found 'true'.intelephense(1006)”以上是关于如何根据按钮单击调用此 php 函数?的主要内容,如果未能解决你的问题,请参考以下文章
您如何根据选择的单选按钮调用不同的 javascript 函数? [复制]