【问题标题】:Update information simultaneously [duplicate]同时更新信息[重复]
【发布时间】:2019-04-26 17:59:31
【问题描述】:

为什么我的代码没有更新?
并且回显不!

$sql_updata1 = "UPDATE information_user SET invitation = '1' WHERE information_user.id = '$ID_Invitation'; UPDATE information_user SET valid = '$num_Invitation '+' $number_userInvitation' WHERE information_user.id = '$ID_Invitation'; UPDATE information_user SET valid = '$num_Caller '+' $number_userCaller' WHERE information_user.id = '$id_user_invitation';";

if ((mysqli_query($con, $sql_updata1)){
    echo "ok";
} else {
    echo "no";
}

【问题讨论】:

  • 为什么要对多个查询进行此操作?您可以将多个分配放在一个 UPDATE 中。 SET invitation = 1, valid = '$num_Invitations' + $number_userInvitation, ...
  • @Barmar,我已经重新打开它,你能发布一个答案,建议如何完成 - 谢谢。
  • 可以使用MySQL多查询执行多条语句。
  • 只是一点建议 - 如果可能的话,您应该从 mysqli 切换到 PDO php.net/manual/en/book.pdo.php。它更安全。
  • 将查询放在必须来回滚动才能开始看到自己在做什么的一行上,这在这里很麻烦。

标签: php mysql


【解决方案1】:

您可以将其作为单个查询来执行。使WHERE 子句同时选择调用者和被调用者。您可以在SET 子句中分配给多个列,并且可以使用IFCASE 使您分配的值取决于您正在处理的行的id

$sql_updata1 = "
    UPDATE information_user 
    SET invitation = IF(id = '$ID_Invitation', '1', invitation)
        valid = IF(id = '$ID_Invitation', 
                    $num_Invitation + $number_userInvitation, 
                    $num_Caller + $number_userCaller)
    WHERE id IN ('$ID_Invitation', '$id_user_invitation')";

【讨论】:

    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 2014-06-27
    • 2017-10-16
    • 2018-03-30
    • 2012-04-03
    • 2019-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多