Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Duplicate entry '1' for key 1
Forum PHP.pl > Forum > PHP
bob101
Witam:)
Stworzyłem sobie baze danych "moviesite" i tabele: "movie" "movietype" "people". I chciałem je wypełnić skryptem napisanym w php oto jego kod:
  1. <?php
  2. // połączenie z serwerem MySQL
  3. $connect = mysql_connect("localhost", "zzzz", "zzzzzz")
  4. or die ("SprawdĽ połączenie z serwerem.");
  5.  
  6. // uaktywnij odpowiednią bazę danych
  7. mysql_select_db("moviesite");
  8.  
  9. // wstaw dane do tabeli "movie"
  10. $insert = "INSERT INTO movie (movie_id, movie_name, movie_type, " .
  11. "movie_year, movie_leadactor, movie_directory) " .
  12. "VALUES (1, 'Bruce Wszechmogący', 5, 2003, 1, 2), " .
  13. "(2, 'Życie biurowe', 5, 1999, 5, 6), " .
  14. "(3, 'Wielki Kanion', 2, 1991, 4, 3)";
  15. $results = mysql_query($insert)
  16. or die(mysql_error());
  17.  
  18. // wstaw dane do tabeli "movietype"
  19. $type = "INSERT INTO movietype (movietype_id, movietype_label) " .
  20. "VALUES (1,'Science-fiction'), " .
  21. "(2, 'Dramat'), " .
  22. "(3, 'Przygoda'), " .
  23. "(4, 'Wojenny'), " .
  24. "(5, 'Komedia'), " .
  25. "(6, 'Horror'), " .
  26. "(7, 'Akcja'), " .
  27. "(8, 'Dla dzieci')" ;
  28. $results = mysql_query($type)
  29. or die(mysql_error());
  30.  
  31. // wstaw dane do tabeli "people"
  32. $people = "INSERT INTO people (people_id, people_fullname, people_isactor, people_isdirector) " .
  33. "VALUES (1, 'Jim Carrey', 1, 0), " .
  34. "(2, 'Tom Shadyac', 0, 1), " .
  35. "(3, 'Lawrence Kasdan', 0, 1), " .
  36. "(4, 'Kevin Kline', 1, 0), " .
  37. "(5, 'Ron Livingston', 1, 0), " .
  38. "(6, 'Mike Judge', 0, 1)";
  39. $results = mysql_query($people)
  40. or die(mysql_error());
  41.  
  42. echo "Dane zostały wstawione poprawnie!";
  43. ?>


-> Problem jest w tym że jak go uruchamiam to wywala mi coś takiego: "Duplicate entry '1' for key 1". Prawdopodobnie coś jest nie tak w wstawieniu danych do tabeli "people" bo gdy uruchomiłem baze spod konsoli mysql to te dwie "movie" "movietype" były uzupełnione a "people" nie ale nie umie się doszukać błędu.
A oto skrypt tworzący baze i tabele:
  1. <?php
  2. //połączenie z serwerem MySQL;
  3. $connect = mysql_connect('localhost','zzzz','zzzzz') or
  4. die("Sprawdz połaczenie z bazą danych");
  5.  
  6. //utwórz baze danych jeśli jeszcze nie istenieje
  7.  $create = mysql_query("CREATE DATABASE IF NOT EXISTS moviesite") or die (mysql_error());
  8.  
  9. //wybierz nowo utworzoną baze danych
  10. mysql_select_db("moviesite");
  11.  
  12. //utwórz tabele"movie"
  13. $movie = "CREATE TABLE movie (
  14. movie_id int(11) NOT NULL auto_increment,
  15. movie_name varchar(255) NOT NULL,
  16. movie_type tinyint(2) NOT NULL default 0,
  17. movie_year int(4) NOT NULL default 0,
  18. movie_leadactor int(11) NOT NULL default 0,
  19. movie_directory int(11) NOT NULL default 0,
  20. PRIMARY KEY (movie_id),
  21. KEY movie_type(movie_type,movie_year)
  22.  )";
  23.  
  24.  $results = mysql_query($movie) or die (mysql_error());
  25.  
  26. //utwórz tabele "movie type"
  27. $movietype = "CREATE TABLE movietype (
  28. movietype_id int(11) NOT NULL auto_increment,
  29. movietype_label varchar(100) NOT NULL,
  30. PRIMARY KEY (movietype_id)
  31. )";
  32.  
  33. $results = mysql_query($movietype) or die(mysql_error());
  34.  
  35. //utwórz tabele"people"
  36. $people = "CREATE TABLE people (
  37.  people_id int(11) NOT NULL auto_increment,
  38.  people_fullname varchar(255) NOT NULL,
  39.  people_isactor tinyint(1) NOT NULL default 0,
  40.  people_isdirector tinyint(1) NOT NULL default 0,
  41.  PRIMARY KEY (people_id)
  42. )";
  43.  
  44. $results = mysql_query($people) or die (mysql_error());
  45.  
  46. echo " Poprawnie utworzono baze danych fimów";
  47. ?>




Czy ktoś może pomóc?dzięki
sticker
z tego błędu wynikasz że próbujesz wpisac do tabeli people ponownie people_id o wartości 1. Jedno już istnieje a pole to jest kluczem głownym więc jednocześnie ma atrybut unique. Jednym słowem już masz ludzika o id równym 1
envp
99% daje że id w tabeli people nie jest auto_increment smile.gif Znaczy nie było a ty je zrobiłeś później.
sticker
raczej tu jest problem niż w tym co napisaeś envp
  1. <?php
  2. $people = "INSERT INTO people (people_id, people_fullname, people_isactor, people_isdirector) " .
  3. "VALUES (1, 'Jim Carrey', 1, 0), " .
  4. "(2, 'Tom Shadyac', 0, 1), " .
  5. "(3, 'Lawrence Kasdan', 0, 1), " .
  6. "(4, 'Kevin Kline', 1, 0), " .
  7. "(5, 'Ron Livingston', 1, 0), " .
  8. "(6, 'Mike Judge', 0, 1)";
  9. ?>

powinien dać
  1. <?php
  2. $people = "INSERT INTO people (people_id, people_fullname, people_isactor, people_isdirector) " .
  3. "VALUES ('', 'Jim Carrey', 1, 0), " .
  4. "('', 'Lawrence Kasdan', 0, 1), " .
  5. "('', 'Kevin Kline', 1, 0), " .
  6. "('', 'Ron Livingston', 1, 0), " .
  7. "('', 'Mike Judge', 0, 1)";
  8. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.