创建一个更新表PHP SQL

时间:2015-12-22 23:47:52

标签: 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($_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);?>

我尝试了这个,但我无法获得更新 team_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转换成一个函数,谢谢。

1 个答案:

答案 0 :(得分:0)

在函数内部看不到

$user_id$DB。在PHP中,只有在函数内声明的变量才会在其中可见,除非它们被显式声明为全局变量。您有两种方法可以解决它:

  1. $user_id$DB作为您的函数的参数:
  2. public function joinTeam($DB, $user_id, $playerteam)
    {
        ...
    
    1. 让您的user_idDB全球化。请注意,这被认为是不好的做法(并且它与将playerteam作为参数传递的事实也不一致):
    2. public function joinTeam($playerteam)
      {
          global $user_id;
          global $DB;
          ...
      

      另请注意,执行查询的方式很容易进行sql注入。有关详细信息以及如何避免此问题,请参阅此stackoverflow答案:How can prepared statements protect from SQL injection attacks?