Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] Błąd w skrypcie, Powtórzone wystąpienie '1' dla klucza 1
Musashi
post
Post #1





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.11.2004
Skąd: Witnica, lubuskie

Ostrzeżenie: (0%)
-----


Zacząłem przepisywać przykłady z książki i utknąłem w pewnym miejscu.
Oto 2 skrypty:

createmovie.php
  1. <?
  2.  
  3. $connect = mysql_connect("localhost", "root", "krasnal") or die("Sprawdz polaczenie z serwerem.");
  4. $create = mysql_query("CREATE DATABASE IF NOT EXISTS moviesite") or die(mysql_error());
  5. mysql_select_db("moviesite");
  6.  
  7. $movie = "CREATE TABLE movie (
  8.  movie_id int(11) NOT NULL auto_increment,
  9.  movie_name varchar(255) NOT NULL,
  10.  movie_type tinyint(2) NOT NULL default 0,
  11.  movie_year int(4) NOT NULL default 0,
  12.  movie_leadactor int(11) NOT NULL default 0,
  13.  movie_director int(11) NOT NULL default 0,
  14.  PRIMARY KEY (movie_id),
  15.  KEY movie_type (movie_type,movie_year)
  16.  )";
  17. $results = mysql_query($movie) or die(mysql_error());
  18.  
  19. // tworzymy tabelę "movietype"
  20. $movietype = "CREATE TABLE movietype (
  21. movietype_id int(11) NOT NULL auto_increment,
  22. movietype_label varchar(100) NOT NULL,
  23. PRIMARY KEY (movietype_id)
  24. )";
  25. $results = mysql_query($movietype) or die(mysql_error());
  26.  
  27. // tworzymy tabelę "people"
  28. $people = "CREATE TABLE people (
  29. people_id int(11) NOT NULL auto_increment,
  30. people_fullname varchar(255) NOT NULL,
  31. people_isactor tiny int(1) NOT NULL default 0,
  32. people_isdirector tiny int(1) NOT NULL default 0,
  33. PRIMARY KEY (people_id)
  34. )";
  35. $results = mysql_query($people) or die(mysql_error());
  36. echo "Poprawnie utworzono bazę danych filmów!";
  37. ?>


oraz moviedata.php
  1. <?
  2.  
  3. $connect = mysql_connect("localhost", "root", "krasnal") or die("Sprawdz polaczenie z sewerem.");
  4. mysql_select_db("moviesite");
  5.  
  6. // Ustawianie danych do bazy
  7. $insert = "INSERT INTO movie (movie_id, movie_name, movie_type, movie_year, movie_leadactor, movie_direct
    or)
  8. VALUES (1, 'Bruce Wszechmogacy', 5, 2003, 1, 2),
  9.  (2, 'Zycie biurowe', 5, 1999, 5, 6),
  10.  (3, 'Wielki kanion', 2, 1991, 4, 3)";
  11. $results = mysql_query($insert) or die(mysql_error());
  12.  
  13. $type = "INSTERT INTO movietype (movietype_id, movietype_label)
  14. VALUES (1, 'Science-fiction'),
  15.  (2, 'Dramat'),
  16.  (3, 'Przygoda'),
  17.  (4, 'Wojenny'),
  18.  (5, 'Komedia'),
  19.  (6, 'Horror'),
  20.  (7, 'Akcja'),
  21.  (8, 'Dla dzieci')";
  22. $results = mysql_query($type) or die(mysql_error());
  23.  
  24. $people = "INSERT INTO people (people_id, people_fullname, people_isactor, people_isdirector)
  25. VALUES (1, 'Jim Carrey', 1, 1),
  26.  (2, 'Tom Shadyac', 2, 2),
  27.  (3, 'Lawrence Kesdan', 3, 3),
  28.  (4, 'Kevin Kline', 4, 4),
  29.  (5, 'Ron Livingston', 5, 5),
  30.  (6, 'Mike Judge', 6, 6)";
  31. $results = mysql_query($people) or die(mysql_error());
  32. echo "Dane zostały wstawione poprawnie!";
  33.  
  34. ?>


Plik createmovie.php wykonuje się prawidłowo, natomiast po próbie przetworzenia moviedata.php w przeglądarce pojawia się następująca informacja:
  1. Powtórzone wystąpienie '1' dla klucza 1

Nie wiem o co chodzi, bo to nie jest typowy błąd generowany przez parser php, więc nie odwołuje się do konkretnego wiersza i nie mam pojęcia o jaki klucz z tych tabel chodzi.

Ten post edytował Musashi 6.09.2006, 23:37:12
Go to the top of the page
+Quote Post
Blastereq
post
Post #2





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 28.11.2005

Ostrzeżenie: (0%)
-----


Dobrze by było jakbyś zobaczył co masz w bazie. Może te rekordy już tam są.
Jeśli nie to :
or die(mysql_error()) - zastąp np.
or die("Błąd movie") dla każdej tabelki zrób inny komunikat, to zobaczysz, w której jest błąd, a to Cię już powinno naprowadzić gdzie się on znajduje.
Go to the top of the page
+Quote Post
Musashi
post
Post #3





Grupa: Zarejestrowani
Postów: 19
Pomógł: 0
Dołączył: 19.11.2004
Skąd: Witnica, lubuskie

Ostrzeżenie: (0%)
-----


Dziękuję bardzo (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Okazało się, że błąd występuje w tabeli people, w pliku craatemovie.php. To znaczy 2 razy było tiny int, zamiast tinyint. Ponadto w pliku moviedata.php było napisane INSTERT, zamiast INSERT (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Błąd, który jest w nagłówku tematu występował, ponieważ jak już sugerowałeś, baza została częściowo zapełniona danymi z tabel, które nie wygenerowały błędu, a potem skrypt próbował to nadpisać. Wykasowałem tabelę, poprawiłem wszystkie błędy, uruchomiłem pliki i działa bez problemu.

Pozdrawiam,
Krzysiek
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.09.2025 - 13:27