php - 在这种情况下,如何从具有外键的不同 mysql 表中删除数据?

标签 php mysql sql database foreign-keys

表:关键词(id,term)

表:ob_key (id, user_id, key_id)

(ob_key.key_id) 引用 (key.id)

我想根据(ob_key.user_id)和关键字(term)删除(ob_key.id),所以在下面创建一个select语句,但它不起作用

<?php

$term=strtolower($_POST['term']);
$user_id=$_POST['users_id'];

$stmt=$db->prepare("DELETE FROM ob_key WHERE user_id=:user_id AND key_id=(SELECT id FROM keyword WHERE term=:term)");

    $stmt->bindParam(":user_id",$user_id);
    $stmt->bindParam(":term",$term);

            $stmt->execute(); 
?>

最佳答案

编辑:

$stmt=$db->prepare("DELETE FROM ob_key WHERE user_id=:user_id AND key_id IN (SELECT id FROM keyword WHERE term=':term')");

问题是我们必须使用 IN 而不是等号 (=)

关于php - 在这种情况下,如何从具有外键的不同 mysql 表中删除数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28612087/

相关文章:

Mysql 每次在另一行中读取相同的值时在一行中增加值

mysql - 显示过去 7 天内添加的查看次数最多的条目

jquery - 数据表多列排序不起作用

php - 您的 SQL 语法有误;查看与您的 MariaDB 服务器版本对应的手册

php - 如何在 yii 中编写这个查询?

php - 调度函数的执行

java - Java 中的数组数组

php - mysql插入(使用到期日期)

SQL:ALTER COLUMN 到更短的 CHAR(n) 类型

sql - 如何在 Transact SQL ( SQL Server 2008 ) 中实现这一点