【问题标题】:Deleting a row from a MySQL table从 MySQL 表中删除一行
【发布时间】:2020-05-03 05:48:33
【问题描述】:

我正在尝试从 SQL 表中删除一行,其中一行包含用户 ID,并且列 bookingComplete 为 =“否”。但是,它似乎并没有删除该行。有谁知道为什么?

if (isset($_SESSION['userID'])) {
                $user = $_SESSION['idUsers'];
                $sql = "DELETE FROM userhousecleaninfo WHERE idUsers = $user AND bookingComplete = 'No'";
                mysqli_query($conn, $sql);
                setcookie($postcode_cookie_name, $postcode, time() + (40000), "/"); //Cookie available for about 10 hours
                header('Location:  booking.php');
                exit();
            }

【问题讨论】:

  • 应该是DELETE FROM ...,而不是DELETE * FROM ...
  • 那还是不行。这很奇怪,因为标题函数正在运行,但该行没有被删除,即使它匹配两个 WHERE 条件
  • 仔细考虑在用户级别永久擦除数据是否真的是您想要做的事情。
  • 你真的有一个名为 idUsers 的 Session 值吗?您的 if 语句检查称为用户 ID 的会话值,但随后您的查询使用不同的值。是错字吗?
  • @ADyson 非常感谢。愚蠢的错误,我能说什么。我应该看到的

标签: php mysql sql database


【解决方案1】:

您的查询对我来说似乎很好,但我发现使用 And 语句没有逻辑。希望 iduser 属性是唯一整数。检查您的 idUsers 属性也在您的表中。此外 Sql 是大小写不敏感。您可以简单地使用 DELETE FROM userhousecleaninfo WHERE idUsers = $user

【讨论】:

  • 谢谢,但是我需要检查两者,因为我正在检查用户以前没有尝试过他们尚未完成的预订。但是,如果他们之前下过订单,我不想删除那里的预订
  • 能否提供 userhousecleaninfo 表架构或截图
  • 另外,idUsers 列是用户注册我的网站时设置的自动增量 int。
  • 是的,但在屏幕截图中,请给我一分钟
【解决方案2】:

不确定是否有解决方案,但请尝试:

$sql = "DELETE FROM userhousecleaninfo WHERE idUsers = '".$user."' AND bookingComplete = 'No'";

附:您在数据库中的“bookingComplete”是否设置为 varchar?如果它是 int - 那么可能不会将您的数据存储到字段中并出现错误。

【讨论】:

    猜你喜欢
    • 2023-03-08
    • 2012-10-10
    • 2011-07-18
    • 2015-08-23
    • 2016-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多