为了账号安全,请及时绑定邮箱和手机立即绑定

如何让按钮在 php 中更新 mysql 数据库

如何让按钮在 php 中更新 mysql 数据库

PHP
红糖糍粑 2022-07-22 18:40:18
下午好,提前感谢您提供的任何帮助。我正在尝试通过单击一个按钮为我的登录系统创建一个调整角色.. 即提升为管理员,但我一生都无法让它工作。我已经尝试了一些新的 php 教程,并且我的表格显示在屏幕上,但遗憾的是这些按钮似乎没有更新任何内容。我已经添加了我拥有的代码,希望这会有所帮助,因为我有些困惑。如果这可以使它更简单,我不介意失去 Symfony。提前致谢。PHP代码:$userId = ['id'];$role = ['role_id'];switch (strtolower($role)) {  case 'promote':    promote($userId);    $session - > getFlashBag() - > add('success', "Promoted to Admin!");  case 'demote':    demote($userId);    $session - > getFlashBag() - > add('success', "Demoted from Admin!");}header('Location: /admin.php');exit();JavaScript:function getAllUsers() {    global $db;    try {        $query = "SELECT * FROM users";        $stmt = $db->prepare($query);        $stmt->execute();        return $stmt->fetchAll(PDO::FETCH_ASSOC);    } catch (\Exception $e) {        throw $e;    }}function promote($userId) {    global $db;    try {        $query = "UPDATE users SET role_id=1 WHERE id = ?";        $stmt = $db->prepare($query);        $stmt->bindparam(1,$userId);        $stmt->execute();    } catch (\Exception $e) {        throw $e;    }}function demote($userId) {    global $db;    try {        $query = "UPDATE users SET role_id=2 WHERE id = ?";        $stmt = $db->prepare($query);        $stmt->bindparam(1,$userId);        $stmt->execute();    } catch (\Exception $e) {        throw $e;    }}function superuser($user_id) {    global $db;    try {        $query = "UPDATE users SET role_id=3 WHERE id = ?";        $stmt = $db->prepare($query);        $stmt->bindparam(1,$user_id);        $stmt->execute();    } catch (\Exception $e) {        throw $e;    }}function request() {    return \Symfony\component\HttpFoundaton\Request::createFromGlobals();}
查看完整描述

1 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

恭喜您使该功能起作用(如果它们起作用)。可能不是。


由于 bindParam 需要 1 个参数,但您发送了 2 个参数,此函数将不起作用。


除此之外,如果您每次都创建新函数,那么不需要函数,您可以创建一个普通查询并更新您的表。


使用函数意味着它可以节省您编写更多代码的时间,用更少的代码完成更多的工作。


所以在你的情况下功能应该是这样的:


$userId = ['id'];

$role = ['role_id'];


function demote($userId) {

    global $db;


    try {

        $query = "UPDATE users SET role_id = ? WHERE id = ?";

        $stmt = $db->prepare($query);

        $stmt->bindparam(1,$userId);

        $stmt->bindparam(2,$role);

        $stmt->execute();

    } catch (\Exception $e) {

        throw $e;

    }

}

在我的情况下,它应该是这样的,没有 bindparams:


function update($sql, $params) {

    $stmt = $pdo->prepare($sql);

    $stmt->execute($params);

    return $stmt; 

}

和 usaqe :


$sql = "UPDATE users SET role_id = ? WHERE id = ?";

update($sql, array($role, $userId));

注意: 我不使用 symfony


查看完整回答
反对 回复 2022-07-22
  • 1 回答
  • 0 关注
  • 104 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信