如何在php查询中更新和使用联接表?
我试图执行更新操作,在where子句中,它将跟随用户的会话id 下面是我尝试过的代码如何在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
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提供。永远不要相信任何人
输入的数量!即使您的查询仅由受信任的用户执行,
您仍有损坏数据的风险。逃跑是不够的