猿问

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

下午好,提前感谢您提供的任何帮助。我正在尝试通过单击一个按钮为我的登录系统创建一个调整角色.. 即提升为管理员,但我一生都无法让它工作。


我已经尝试了一些新的 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();

}


红糖糍粑
浏览 105回答 1
1回答

ABOUTYOU

恭喜您使该功能起作用(如果它们起作用)。可能不是。由于 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
随时随地看视频慕课网APP
我要回答