Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wydaje mi się, że nie mogę zapobiec wprowadzaniu zduplikowanych nazw

Jest tu kilka rzeczy nie tak.

Używasz słowa kluczowego MySQL list jako funkcja, a samo to spowoduje problemy.

Uwaga dodatkowa:tak, wiem, że to nie jest słowo „zarezerwowane”, to „słowo kluczowe”, a MySQL traktuje słowa kluczowe specjalnie, jeśli są używane jako funkcja, i właśnie to robisz teraz w drugim zapytaniu , i jest sposobem, w jaki MySQL interpretuje to jako; funkcja, a nie nazwa deklaracji tabeli.

Proponuję zmienić nazwę tej tabeli na listy lub umieścić ją w kleszcze.

Mieszasz także API/funkcje MySQL, które się nie mieszają.

Twój nowy kod będzie wyglądał tak,
podczas upuszczania $selected = mysql_connect('christmas', $dbhandle);

$query = mysqli_query($dbhandle, "SELECT * FROM `list` WHERE name='$name'") 
        or die (mysqli_error($dbhandle));

if(mysqli_num_rows($query) > 0){
    echo 'that name already exists';
}else{
    mysqli_query($dbhandle, "INSERT INTO `list` (name, one, two, three, four, five, six, seven, eight) 
                VALUES ('$name' , '$one' , '$two' , '$three' , '$four' , '$five' , '$six', '$seven' , '$eight')") 
                 or die (mysqli_error($dbhandle));

}


mysqli_close($dbhandle);

Twój kod jest również otwarty na wstrzyknięcie SQL. Użyj przygotowanego oświadczenia.

Teraz nie mamy pojęcia, skąd pochodzą wszystkie twoje zmienne.

Użyj raportowania błędów.

Proponuję również użyć warunkowego empty() dla twoich zmiennych/wejść.

W przeciwnym razie możesz również otrzymać inne błędy, na które MySQL może narzekać.

Czyli:

if(!empty($var)){...}

Ostatecznie, aby upewnić się, że w Twojej bazie danych nie ma zduplikowanych wpisów, możesz ustawić UNIKALNE ograniczenie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy instrukcja merge jest dostępna w MySQL?

  2. Sprawdzanie, czy mysql_query coś zwróciło, czy nie

  3. Jak wybrać ostatnie 6 miesięcy z tabeli aktualności za pomocą MySQL?

  4. Wydajność wstawiania bazy danych

  5. Wydajniejsze zapytanie o granice słów w mySQL