我有一个包含两个表的数据库
父母可以有很多孩子。一个孩子只能有一个父母。如果父项至少存在一个子项,则应运行一个DELETE语句。如果不存在子项,则应运行不同的DELETE语句。我有以下内容:
try {
$del_id = $_GET['del_id'];
$select = "SELECT count(parentID) FROM subtasks WHERE parentID = :del_id";
$select = $pdo->prepare($select);
$select->bindParam(':del_id', $_GET['del_id']);
$result = $select->fetchAll();
if($result >= 1) {
$delete = "DELETE userlists, subtasks FROM userlists INNER JOIN subtasks ON userlists.listID = subtasks.parentID WHERE listID = :del_id";
$delete = $pdo->prepare($delete);
$delete->bindParam(':del_id', $_GET['del_id']);
$delete->execute();
header("Location: loggedin.php");
} else {
$delete = "DELETE FROM userlists WHERE listID = :del_id";
$delete = $pdo->prepare($delete);
$delete->bindParam(':del_id', $_GET['del_id']);
$delete->execute();
header("Location: loggedin.php");
}
}
如果我的父级至少有一个子级,则第一个DELETE语句按预期运行。但是,如果没有子节点,则看起来整个代码都试图运行第一个DELETE语句并返回到loggedin.php,后者不会删除父节点,因为没有子节点。
第二个查询是否有特定原因未运行?
答案 0 :(得分:1)
如果你var_dump $result
,你会发现它是一个数组。在它设置时,它将等于1,或者为真。试试if(count($result) >= 1)
,看看是否有帮助。