SQL отказывается удалять строку, если есть только одна строка

0

Изображение 174551 Изображение 174551 У меня есть временная таблица загрузок, и когда я пытаюсь удалить загруженные файлы из временной таблицы, она удаляет все строки, кроме одной строки. Пожалуйста, помогите, я не знаю, почему это происходит. Я проверил все мои sql и PHP.

delete from 'message_attachments_temp' 
                             where 
                            'from' = 1 AND 
                            'to'   = 2

По какой-то причине SQL удалит все, но оставит позади одну строку. Кто-нибудь знает, что может быть причиной этого.

Вот моя функция php, которая отправляет сообщения и удаляет их из таблицы временных загрузок.

 else if($rtype == 23) {/* submit message */
    $friends_username = isset($_REQUEST['to']) ? $Wall->filterData($_REQUEST['to']) : "";
    /* get link preview data from ajax */
    $linkPicture = isset($_POST['linkPicture']) ? trim($_POST['linkPicture']) : "";
    $linkTitle = isset($_POST['linkTitle']) ? trim($_POST['linkTitle']) : "";
    $linkDescription = isset($_POST['linkDescription']) ? trim($_POST['linkDescription']) : "";
    $linkURL = isset($_POST['linkURL']) ? trim($_POST['linkURL']) : "";
    $linkVideoID = isset($_POST['linkVideoID']) ? trim($_POST['linkVideoID']) : "";
    $linkVideoProvider = isset($_POST['linkVideoProvider']) ? trim($_POST['linkVideoProvider']) : ""; 
    if(isset($logged_user_id) && isset($friends_username)) {/* if the user is logged in and there is a friend id then */
        $queryed = trim(strip_tags(htmlspecialchars($_POST["sendMessageUID"])));
        function no_magic_quotesed($queryed) {
            $dataed = explode("\\",$queryed);
            $cleaneded = implode("",$dataed);
            return $cleaneded;
        }
        $checkfor_attachments = mysqli_query($asktippyDatabaseConnection, " SELECT * from 'message_attachments_temp' 
                                                  where 
                                                 'from' = ".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)." and 
                                                 'to'   = ".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))." 
                                                  order by 'id' asc");
        if(mysqli_num_rows($checkfor_attachments) == 0 && $queryed == "") {/* if no temporary attachments are found then */
            echo "empty";
            exit;
        }
        $date = mysqli_real_escape_string($asktippyDatabaseConnection, strtotime(date("Y-m-d H:i:s")));
        $group_id = $Wall->get_group_nbr(mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($_POST['to'])), mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($_POST["from"])));
        mysqli_query($asktippyDatabaseConnection, "insert into 'messages' values( '', 
                                                    '".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($_POST['to']))."', 
                                                    '".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($logged_user_id))."', 
                                                    '".mysqli_real_escape_string($asktippyDatabaseConnection, no_magic_quotesed($queryed))."', 
                                                    '0', 
                                                    '0', 
                                                    '".mysqli_real_escape_string($asktippyDatabaseConnection, $date)."', 
                                                    '0',
                                                    '".$group_id."')");     
        $mesgid = mysqli_insert_id($asktippyDatabaseConnection);
            ### attach
        error_log(print_r('number of temporary attachments: '.mysqli_num_rows($checkfor_attachments), true));
            if(mysqli_num_rows($checkfor_attachments) > 0) {/* if there are temporary message attachments then */
                while($getall_attachments = mysqli_fetch_array($checkfor_attachments)) {
                    mysqli_query($asktippyDatabaseConnection, "insert into 'message_attachments' values( '', 
                                                                            '".$mesgid."', 
                                                                            '".$getall_attachments["file"]."', 
                                                                            '0', 
                                                                            '0', 
                                                                            '".strip_tags(time())."',
                                                                            '".$linkTitle."', 
                                                                            '".$linkDescription."', 
                                                                            '".$linkURL."', 
                                                                            '".$linkPicture."', 
                                                                            '".$linkVideoProvider."', 
                                                                            '".$linkVideoID."',                                                                     
                                                                            '0',
                                                                            ''
                                                                            )");
                }
                mysqli_query($asktippyDatabaseConnection, "delete from 'message_attachments_temp' 
                             where 
                            'from' = ".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)." AND 
                            'to'   = ".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))."");


error_log(print_r("delete from 'message_attachments_temp' 
                             where 
                            'from' = ".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)." AND 
                            'to'   = ".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))."", true));
            }
            ### attach
            if(mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($_POST['newmessage_load_prev_chat'])) == 1) {
                $check_all_available_conversations = mysqli_query($asktippyDatabaseConnection, "SELECT * FROM 'messages' where 
                                                                 'touser' = '".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)."' and 
                                                                  'fromuser' = ".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))." and 
                                                                  'deleted' = '0' || 'touser' = ".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))." and 
                                                                  'fromuser' = ".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)." and 'outdeleted' = '0' order by 'mesg_id' asc");
            } else {
                $check_all_available_conversations = mysqli_query($asktippyDatabaseConnection, "SELECT * from 'messages' where 
                                                                 'touser' = '".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)."' and 
                                                                 'fromuser' = '".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))."' and 
                                                                 'deleted' = '0' || 'touser' = '".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($friends_username))."' and 
                                                                 'fromuser' = '".mysqli_real_escape_string($asktippyDatabaseConnection, $logged_user_id)."' and 'outdeleted' = '0' order by 'mesg_id' desc limit 1");
            }
            while($get_all_available_conversations = mysqli_fetch_array($check_all_available_conversations)) {
                $check_friends_full_details = mysqli_query($asktippyDatabaseConnection, "select * from 'users' where 'mem_id' = ".mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($get_all_available_conversations['fromuser']))."");
                while($get_friends_full_details = mysqli_fetch_array($check_friends_full_details)) {
                    $avatar = $Wall->get_user_avatar($get_friends_full_details['mem_id']);
                    if($get_friends_full_details['mem_id'] == $logged_user_id) { ?>
                        <div class="message-popup-convers-item2">
                            <div class="message-popup-convers-content998">
                                <div class="message-popup-convers-text998">
                                <?php if($get_all_available_conversations['message']) { ?>
                                     <?php echo nl2br(strip_tags(stripslashes($get_all_available_conversations['message'])));?>  
                                <?php } ?>
                                </div><!--message-popup-convers-text-->   
                            </div><!--message-popup-convers-content-->
                        </div><!--message-inbox-item-->
                        <div class="message-popup-convers-item2-content">
                            <div class="message-popup-convers-content99820">
                                <?php echo get_posts_html($get_all_available_conversations['mesg_id'], $logged_user_id); ?>
                            </div><!--message-popup-convers-content-->
                        </div><!--message-inbox-item-->
<?php                   $last_message_time = strip_tags(stripslashes($Wall->timeFormat($get_all_available_conversations['datesent'])));
                    } else { ?>
                        <div class="message-popup-convers-item">
                            <img class="message-popup-convers-avatar9982" src="<?php echo $avatar; ?>" alt="">
                            <div class="message-popup-convers-content">
                                <div class="message-popup-convers-text">
                                <?php if($get_all_available_conversations['message']) { ?>
                                     <?php echo nl2br(strip_tags(stripslashes($get_all_available_conversations['message'])));?>  
                                <?php } ?>
                                </div><!--message-popup-convers-text-->   
                            </div><!--message-popup-convers-content-->
                        </div><!--message-inbox-item-->
                        <div class="message-popup-convers-item-content">
                            <div class="message-popup-convers-content20">
                                <?php echo get_posts_html($get_all_available_conversations['mesg_id'], $logged_user_id); ?> 
                            </div><!--message-popup-convers-content-->
                        </div><!--message-inbox-item-->
<?php                   $last_message_time2 = strip_tags(stripslashes($Wall->timeFormat($get_all_available_conversations['datesent'])));
                    }
                }
            }
        $Wall->insertNotificationTrack(mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($_POST["from"])), 0, 18, mysqli_real_escape_string($asktippyDatabaseConnection, strip_tags($_POST["to"]))); // sent in message
    } else {
        echo "<div id='message_info'>Sorry, something went wrong.</div>";
    }
}
  • 1
    Можете ли вы дать скриншот, как выглядит ваша таблица, пожалуйста?
  • 1
    Если вы хотите удалить все строки, почему бы вам не сделать TRUNCATE message_attachments_temp ?
Показать ещё 10 комментариев
Теги:

1 ответ

0

если вы собираетесь TRUNCATE в таблице, и у вас есть внешний ключ, попробуйте следующее:

SET FOREIGN_KEY_CHECKS = 0; 
TRUNCATE table $table_name; 
SET FOREIGN_KEY_CHECKS = 1;

если вы собираетесь удалить определенные строки, попробуйте выбрать все идентификаторы и удалить эти идентификаторы, надеюсь, это сработает

DELETE FROM 'table_name' WHERE 'id' IN (your query);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню