Как удалить данные из двух таблиц Mysql

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
109
Реакции
4
Здравствуйте, хочу удалить данные из двух таблиц одновременно вот таким запросом
Код:
if($action == "delete") {
$sql = "
    DELETE FROM depart WHERE depart_id=$depart_id
";
   
$sql = "
    DELETE FROM subdepart WHERE depart_id=$depart_id
";

if ($conn->query($sql) === TRUE) {
    header ("Location: admin_depart_view.php");
} else {
    echo "Error deleting record: " . $conn->error;
}

 }
но данные не удаляются. Как можно исправить чтобы скрипт заработал?. Эти две таблицы связанны друг с другом по поле depart_id. Попытался сделать одним запросом, но если во второй таблице нету данных которые связанны с первым, данные не удаляются и с первого.
 
PHP:
<?php

if($action == "delete") {
    $sql1 = $conn->query("DELETE FROM depart WHERE depart_id=$depart_id");
    $sql2 = $conn->query("DELETE FROM subdepart WHERE depart_id=$depart_id");

    if ($sql1 === TRUE and $sql2 === true) {
        header ("Location: admin_depart_view.php");
    } else {
        echo "Error deleting record: " . $conn->error;
    }
}
 
PHP:
<?php
if($action == "delete") {
    $sql1 = $conn->query("DELETE FROM depart WHERE depart_id=$depart_id");
    $sql2 = $conn->query("DELETE FROM subdepart WHERE depart_id=$depart_id");

    if ($sql1 === TRUE and $sql2 === true) {
        header ("Location: admin_depart_view.php");
    } else {
        echo "Error deleting record: " . $conn->error;
    }
}
Если будет ошибка и в первом запросе, и во втором - текст ошибки первого запроса не выведется. ИМХО лучше отдельно проверять каждую переменную $sql после каждого запроса и выводить текст ошибки, если она есть. А после уже отдельно редирект при условии отсутствия ошибок.
 
Последнее редактирование:
PHP:
if($action == "delete") {
$error='';
 $sql1 = $conn->query("DELETE FROM depart WHERE depart_id=$depart_id");
$error.='sql1: '.$conn->error.'<br>';
 $sql2 = $conn->query("DELETE FROM subdepart WHERE depart_id=$depart_id");
$error.='sql2: '.$conn->error;

 if ($sql1 === TRUE and $sql2 === true) {
 header ("Location: admin_depart_view.php");
 } else {
 echo "Error deleting record: " . $error;
 }
}
 
Назад
Сверху