查询不会从数据库中删除数据


query does not delete data from the db

这是我的查询

$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");

这里我有两个表产品和详细信息,用户ID是详细信息中的主键,并在产品中做了外键。

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

对不起,英语不好

DELETE查询的正确语法不包括*

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();
}

上述内容将报告类似于以下内容的错误:

错误 1064 (42000):您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册,了解在"* FROM "附近使用的正确语法

SELECT查询中,您必须指定 tha 表才能获得*,如 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");

}