Как сделать так, чтобы не записывалось новое значение в MySQL phpMyAdmin если в первом уже есть такие значения только записанные в разные поля

У меня в таблицу вставляются значения first_code и second_code, но они должны быть уникальны я написал скрипт который должен был проверять это:

public function isChatInDatabase($code1, $code2){
        $stmt = $this -> con -> prepare("SELECT id FROM chats WHERE (first_code = ? and second_code = ?) or (second_code = ? and first_code = ?)");
        $stmt -> bind_param("ssss", $code1,$code2, $code1, $code2);
        $stmt -> execute();
        $stmt -> store_result();
        if ($stmt -> num_rows() == 1){
            return true;
        }else{
            return false;
        }
    }

но всё равно добавляется такое же значение. Я в PHP совсем недавно, а конкретнее он мне только для базы данных нужен. Буду очень благодарен за помощь.

фото из базы данных

У одного кода может быть несколько других кодов и даже он сам: Пример из базы данных

Мне нужно именно проверять, есть ли определённый код в поле first_code и у него есть второй код в поле second_code


Ответы (1 шт):

Автор решения: Archon

Я нашёл решение своей проблемы:

public function func($code1, $code2){
        $stmt = $this -> con -> prepare("SELECT id FROM chats WHERE (first_code = ? and second_code = ?)");
        $stmt -> bind_param("ss", $code1,$code2);
        $stmt -> execute();
        $stmt -> store_result();
        if ($stmt -> num_rows() == 1){
            return true;
        }else{
            $stmt = $this -> con -> prepare("SELECT id FROM chats WHERE (first_code = ? and second_code = ?)");
            $stmt -> bind_param("ss", $code2,$code1);
            $stmt -> execute();
            $stmt -> store_result();
            if ($stmt -> num_rows() == 1){
                return true;
            }else{
                return false;
            }
        }
    }

Теперь всё работает как надо.

→ Ссылка