我有一些当前有效的代码,但我需要将其转换为我的用户类中的函数。 这是我想要转换为函数的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转换成一个函数,谢谢。
答案 0 :(得分:0)
$user_id
和$DB
。在PHP中,只有在函数内声明的变量才会在其中可见,除非它们被显式声明为全局变量。您有两种方法可以解决它:
$user_id
和$DB
作为您的函数的参数:public function joinTeam($DB, $user_id, $playerteam)
{
...
user_id
和DB
全球化。请注意,这被认为是不好的做法(并且它与将playerteam
作为参数传递的事实也不一致):public function joinTeam($playerteam)
{
global $user_id;
global $DB;
...
另请注意,执行查询的方式很容易进行sql注入。有关详细信息以及如何避免此问题,请参阅此stackoverflow答案:How can prepared statements protect from SQL injection attacks?