创建一个函数来更新PHP SQL表
我有一些代码,目前可以工作,但我需要把它变成一个函数在我的用户类。 这就是我想将其转换为函数的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($_
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;
...