如何在php查询中更新和使用联接表?

如何在php查询中更新和使用联接表?,php,mysql,join,sql-update,Php,Mysql,Join,Sql Update,我试图执行更新操作,在where子句中,它将跟随用户的会话id 下面是我尝试过的代码 if(isset($_POST['withdraw'])) { $sql=" UPDATE s SET s.status ='Claimed' , s.Date = CURRENT_DATE() FROM sales s JOIN user u ON s.No = u.No WHERE s.DATE(Tran

我试图执行更新操作,在where子句中,它将跟随用户的会话id

下面是我尝试过的代码


if(isset($_POST['withdraw']))
{ 
   
   $sql="
   UPDATE s
      SET s.status ='Claimed'
        , s.Date = CURRENT_DATE()
     FROM sales s
     JOIN user u
       ON s.No = u.No
    WHERE s.DATE(TransacDate) != CURRENT_DATE()
      AND s.status = 'Unclaimed'
      AND u.No = '". $_SESSION["No"]."'
    ORDER 
       BY s.TransacDate
   ";
   $sql_claim = mysqli_query($link, $sql);
   
   if (mysqli_affected_rows($link) > 0){
    echo "<script>alert('Successfully Claimed!')</script>";
    echo "<script>window.location = 'claimed.php'</script>";  
   }
  else
    echo "<script>alert('Please try tomorrow!')</script>";
}


如果(isset($_POST['draw']))
{ 
$sql=”
更新
设置s.status='Claimed'
,s.日期=当前日期()
来自销售部
加入用户u
美国号=美国号
其中s.DATE(交易日期)!=当前日期()
和s.状态=‘无人认领’
和u.No='“$”会话[“No”]。”
命令
通过s.TransacDate
";
$sql\u claim=mysqli\u查询($link,$sql);
如果(mysqli_受影响的_行($link)>0){
回显“警报('已成功声明!')”;
echo“window.location='claired.php';
}
其他的
echo“提醒('请明天再试!')”;
}

我试图实现一个结果,用户可以要求他们的钱,如果他们的交易不是今天。基于他们的会话。会话中的哪个具有id。对于当前查询,我没有得到任何错误,但我相信这是因为它没有收到id。如何修复此查询?

您应该首先定义表名,然后加入它

$sql="UPDATE sales s
      JOIN user u ON s.No = u.No
      SET s.status ='Claimed', s.Date = CURRENT_DATE()
      WHERE s.DATE(s.TransacDate) != CURRENT_DATE()
      AND s.status = 'Unclaimed'
      AND u.No = '". $_SESSION["No"]."'
      ORDER BY s.TransacDate";
警告:您对SQL注入非常开放,应该使用 参数化准备语句,而不是手动构建 查询。它们由PDO或MySQLi提供。永远不要相信任何人 输入的数量!即使您的查询仅由受信任的用户执行, 您仍有损坏数据的风险。逃跑是不够的