Я сделаю все возможное, чтобы сформулировать проблему.
Я проверяю наличие дубликатов в операторе вставки, помещая запрос в массив и используя цикл While для проверки каждой строки в таблице базы данных. У меня работает логика, за исключением того, что она все еще дает мне ошибку, когда только одно условий выполняется в любой строке. То, что я ищу, это как вывести ошибку только тогда, когда оба встречаются для любой отдельной строки .
Пример: у исполнителя может быть несколько песен, но я не хочу, чтобы у них были дублированные песни. Между тем несколько исполнителей должны иметь возможность иметь песни с одинаковым названием. Однако я получаю сообщение об ошибке, даже если в любом ряду выполняется одно из условий, мешающих мне выполнить это.
Итак, как мне проверить оба условия, которые должны быть выполнены для одной строки, а не для нескольких строк.
Спасибо!
// Insert user input Music into the Database
// Check for duplicates
public function insertMusic() {
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)
or die('Error connecting to DB');
$song_title = mysqli_real_escape_string($dbc, trim($this->song_title));
$song_length = mysqli_real_escape_string($dbc, trim($this->song_length));
$song_album = mysqli_real_escape_string($dbc, trim($this->song_album));
$song_artist = mysqli_real_escape_string($dbc, trim($this->song_artist));
$album_art = mysqli_real_escape_string($dbc, trim($this->album_art));
// Check database for duplicates
$duplicate_query = "Select * from Music";
$duplicate_results = mysqli_query($dbc, $duplicate_query)
or die('Error querying DB');
$isDuplicate = true;
while ($row = mysqli_fetch_array($duplicate_results)) {
// Something with these 2 conditions are the issue??
if ( ($song_title != $row['SongTitle']) && ($song_artist != $row['SongArtist']) ) {
$isDuplicate = false;
} else {
$isDuplicate = true;
echo '<p class="error">Song is already in the Database!</p>';
break;
}
}
if ($isDuplicate === false) {
$query = "INSERT INTO Music (id, dateAdded, SongTitle, SongLength, SongAlbum, SongArtist, AlbumArt)" .
"VALUES (0, NOW(), '$song_title', '$song_length', '$song_album', '$song_artist', '$album_art')";
// echo $query;
$result = mysqli_query($dbc, $query)
or die('Error querying DB 1');
mysqli_close($dbc);
echo '<p class="success">Success!</p>';
}
}