【问题标题】:query does not delete data from the db查询不会从数据库中删除数据
【发布时间】:2012-05-25 12:35:04
【问题描述】:

这是我的查询

$db2=mysql_connect("localhost","root","");
    mysql_select_db("my_requests",$db2);

    $query=mysql_query("SELECT * FROM details INNER JOIN product ON details.user_id = product.user_id"); // find the city
    $row=mysql_fetch_array($query);// save record

        $id=$row['user_id'];
        echo "$id";


        $query1=mysql_query("DELETE * FROM details WHERE details.user_id=$id");
        $query2=mysql_query("DELETE * FROM product WHERE product.user_id=$id");

这里我有两张表products和detail,user id是details的主键,product是外键。

假设我在数据库中有两个条目,user_id = 12,另一个条目 user_id = 11 1. 当我取两个表的内部连接并尝试显示 user_id 时,它只显示一个 user_id 12 2. 当我尝试使用 user_id 删除数据时,它不会从表中删除数据。

抱歉英语不好

【问题讨论】:

  • 请停止使用古老的 mysql_* 函数编写新代码。它们不再被维护并且社区已经开始了弃用过程。相反,您应该了解准备好的语句并使用 PDO 或 MySQLi。
  • 在您的查询中尝试Select product.user_id From...

标签: php mysql


【解决方案1】:

proper syntax of a DELETE query 不包括*

DELETE FROM product WHERE product.user_id=$id
//^^^^^^^^^

如果进行一些基本的错误检查和调试,API 会报告语法错误。

// This query has a syntax error and will return FALSE...
$query1 = mysql_query("DELETE * FROM details WHERE details.user_id=$id");
if (!$query1) {
  // On failure, see what your error was.
  echo mysql_error();
}

上面会报类似的错误:

ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取在 '* FROM

附近使用的正确语法

【讨论】:

  • @Shiven 不要使用 w3schools。那是 SQL 语法参考,但不是 MySQL 文档。 MySQL 不允许 * 存在。直接查看 MySQL 文档。
  • @Shiven 此外,经常发现 w3schools 已过时。它是出了名的不可靠。最好始终使用原始来源。
【解决方案2】:

在您的SELECT 查询中,您必须指定该表以获取*,如details.*products.*,因为您要连接两个表。在你的情况下,结果是一样的。

您还需要将$row=mysql_fetch_array($query); 放在一个循环中,以获取每一行,然后,您的DELETE 语法不好:

while($row=mysql_fetch_array($query)) {
    $id=$row['user_id'];
    echo "$id";

    $query1=mysql_query("DELETE FROM details WHERE details.user_id=$id");
    $query2=mysql_query("DELETE FROM product WHERE product.user_id=$id");


}

【讨论】:

  • 我也尝试过,它从产品表 user_id=11 中删除,并没有删除其余条目
  • 你的脚本回显的$id比删除的多?
  • 不,它只是显示一个正在从产品表中删除的 id
猜你喜欢
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 1970-01-01
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
相关资源
最近更新 更多