Mysql
 sql >> база данни >  >> RDS >> Mysql

Изглежда, че не мога да предотвратя въвеждането на дублирани имена

Тук има доста грешни неща.

Използвате MySQL ключова дума list като функция и само това ще ви създаде проблеми.

Странична бележка:Да, знам, че това не е "резервирана" дума, това е "ключова дума" и MySQL третира ключовите думи специално, ако се използват като функция, което правите сега във втората си заявка , и е начинът, по който MySQL го интерпретира като; функция, а не име на декларация на таблица.

Предлагам ви да преименувате тази таблица на списъци или да я увиете в отметки.

Вие също така смесвате MySQL API/функции, които не се смесват.

Така че новият ви код ще се чете като,
докато пуска $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);

Вашият код също е отворен за SQL инжекция. Използвайте подготвено изявление.

Сега нямаме представа откъде идват всичките ви променливи.

Използвайте отчитане на грешки.

Също така ви предлагам да използвате условен empty() за вашите променливи/входни данни.

В противен случай може да получите и други грешки, от които MySQL може да се оплаче.

Т.е.:

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

В крайна сметка и за да сте сигурни, че няма дублиращи се записи във вашата база данни, можете да зададете УНИКАЛНО ограничение.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените размера на колоната в MySQL

  2. MySQL счита 'е' и 'ё' за равни, как да го настроя да ги счита за различни?

  3. Какво представляват двигателите на базата данни MySQL?

  4. втори последен ред на таблица mysql

  5. Как да наблюдавате обединяването на връзки за .NET MySQL Data Connector в IIS