创建一个函数来更新PHP SQL表

创建一个函数来更新PHP SQL表,php,sql,function,Php,Sql,Function,我有一些代码,目前可以工作,但我需要把它变成一个函数在我的用户类。 这就是我想将其转换为函数的SQL if(isset($_POST['teams'])){ $stmt = $DB_con->prepare("UPDATE users SET team_id= '$playerteam' WHERE user_id = $user_id "); $stmt->execute(); } if(isset($_

我有一些代码,目前可以工作,但我需要把它变成一个函数在我的用户类。 这就是我想将其转换为函数的SQL

 if(isset($_POST['teams'])){
        $stmt = $DB_con->prepare("UPDATE users SET team_id= '$playerteam' WHERE user_id = $user_id ");
             $stmt->execute();
        }
         if(isset($_POST['leaveteam'])){
        $stmt = $DB_con->prepare("UPDATE users SET team_id= 0 WHERE user_id = $user_id ");
             $stmt->execute();
        }
    $stmt = $DB_con->prepare("SELECT * FROM teams
    INNER JOIN users
    ON teams.id=users.team_id
    ORDER BY team_name ASC");
    $stmt->execute();
    $teamRow=$stmt->fetchall(PDO::FETCH_ASSOC);?>
我尝试了此操作,但无法获得更新团队id的功能

   public function joinTeam($playerteam)
   {
        if(isset($_POST['teams'])){
    $stmt = $DB_con->prepare("UPDATE users SET team_id= '$playerteam' WHERE user_id = $user_id ");
         $stmt->execute();
   }

有人能帮我将此sql转换为函数吗,谢谢。

$user\u id
$DB
在函数中看不到。在PHP中,只有在函数中声明的变量在函数中可见,除非它们显式声明为全局变量。有两种方法可以解决这个问题:

  • $user\u id
    $DB
    作为参数传递给函数:
  • 将您的
    user\u id
    DB
    设置为全局。请注意,这被认为是一种不好的做法(这也与您将
    playerteam
    作为参数传递的事实不一致):

  • 还请注意,执行查询的方式很容易被sql注入。查看此stackoverflow答案了解详细信息以及如何避免:

    a)函数范围内没有$user\u id。它来自哪里?b) 您已经在使用一个准备好的语句,为什么不使用参数而不是混合在可能不安全的负载中呢?如果您确实想使用函数而不通过参数发送变量,您可以看看使用
    $\u GLOBAL
    变量。可能不建议。我该如何调用该函数?我已经在您的帮助下更新了该函数,并将onclick调用添加到我的提交按钮中,但它仍然不起作用。输入type=“submit”value=“Join”onclick=“joinTeam()”/>您不能从javascript调用php函数。您需要通过提交表单或使用Ajax向服务器发送显式请求。详情如下:
    public function joinTeam($DB, $user_id, $playerteam)
    {
        ...
    
    public function joinTeam($playerteam)
    {
        global $user_id;
        global $DB;
        ...