Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Problem z korzystaniem z bazy danych
mistrzuni0
post 22.01.2013, 18:36:26
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.01.2013

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


Cześć czołem.

Postanowiłem zrobić coś dla siebie i nauczyć się coś niecoś z PHP i MySQL.

Działam na podstawie książki PHP5, Apache, MySQL - Od podstaw.


Wszystko szło elegancko do momentu kiedy zaczęło się korzystanie z bazy danych. Już na początku rozdziału utknąłem i mimo przeanalizowania konfiguracji od początku, nie mogę znaleźć błędu i ruszyć dalej [']

Nie wiem w czym tkwi problem, ale po napisaniu danej strony i próbie otworzenia jej w przeglądarce, wyskakuje error 500 i po zawodach.

  1. <?php
  2. //połączenie z bazą mysql
  3. $connect = mysql_connect("localhost". "krystian". "haslo") or
  4. die ("Sprawdź połączenie z serwerem.");
  5.  
  6. //utworz baze danych jezeli jeszcze nie istnieje
  7. $create = mysql_query("CREATE DATABASE IF NOT EXISTS moviesite")
  8. or die (mysql_error());
  9.  
  10. // wybierz nowo utworzoną bazę danych
  11. mysql_select_db("moviesite");
  12.  
  13. //utworz tabele movie
  14. $movie = "CREATE TABLE movie (
  15. movie_id int(11) NOT NULL auto_increment.
  16. movie_name varchar(255) NOT NULL.
  17. movie_type tinyint(2) NOT NULL defeault 0.
  18. movie_year int(4) NOT NULL defeault 0.
  19. movie_leadactor int(11) NOT NULL defeault 0.
  20. movie_director int(11) NOT NULL defeault 0.
  21. PRIMARY KEY (movie_id).
  22. KEY movie_type (movie_type.movie_year)
  23. )";
  24. $results = mysql_query($movie)
  25. or die (mysql_erro());
  26.  
  27. //utworz tabele movietype
  28. $movietype = "CREATE TABLE movietype (
  29. movietype_id int(11) NOT NULL auto_increment.
  30. movietype_label varchar(100) NOT NULL.
  31. PRIMARY KEY (movietype_id)
  32. )";
  33.  
  34. $results = mysql_query($movietype)
  35.  
  36. //utworz tabele people
  37. $people = "CREATE TABLE people (
  38. people_id int(11) NOT NULL auto_increment.
  39. people_fullname varchar(255) NOT NULL.
  40. people_isactor tinyint(1) NOT NULL defeault 0.
  41. people_isdirector tinyint(1) NOT NULL defeault 0.
  42. PRIMARY KEY (people_id)
  43. )";
  44.  
  45. $results = mysql_query($people)
  46.  
  47. echo "Poprawnie utworzono bazę danych filmow!";
  48.  
  49. ?>


według jakiegoś online syntax checkera sam kod jest poprawny.
mysql włącza mi się razem z windowsem, apache również śmiga na bieżąco.

ku formalności - korzystam z php w wersji 5.2.17 oraz mysql w wersji 6.0.0.

Hilfe, nie mogę ruszyć dalej z nauką ; /

Ten post edytował mistrzuni0 22.01.2013, 18:39:39
Go to the top of the page
+Quote Post
b4rt3kk
post 22.01.2013, 18:43:41
Post #2





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Czemu używasz kropek zamiast przecinek? Być może nie masz też praw dostępu do tego pliku.


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
pedro84
post 22.01.2013, 18:54:18
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Stawiam na to
  1. mysql_erro()

Poza tym, logi coś mówią?

Włącz sobie wyświetlanie błędów.

Ten post edytował pedro84 22.01.2013, 18:56:31


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
tolomei
post 22.01.2013, 19:19:11
Post #4





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.

W liniach 3, 15-21, 29, 30, 39-42 masz kropki zamiast przecinków.

Włącz sobie raportowanie błędów. Tutaj znajdziesz jak to zrobić.

Pozdro

Ten post edytował tolomei 22.01.2013, 19:21:23


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
mistrzuni0
post 22.01.2013, 19:34:08
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.01.2013

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


Ok, dzięki panowie za szybkie odpowiedzi, pokazywanie błędów się przyda na przyszłość.

pozmieniałem kropki na przecinki ale dalej nic.

Fatal error: Call to undefined function mysql_connect() in C:\Program Files\Apache Group\Apache2\test\createmovie.php on line 7

takie coś wyłazi teraz.
Go to the top of the page
+Quote Post
lipek3
post 22.01.2013, 19:57:01
Post #6





Grupa: Zarejestrowani
Postów: 17
Pomógł: 4
Dołączył: 18.02.2008

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


nie masz załadowanych bibliotek mysql dla php
tu znajdziesz opis włączania opis o co chodzi http://alturl.com/i2k5h
Pod windows powinieneś mieć te biblioteki zakomentowane w php.ini wystarczy je zakomentować.
Pod linux powinno wystarczyć doinstalować odpowiednią dla biblioteki paczkę.

Powinieneś dla zrestartować serwer ww jeśli po odkomentowaniu nie zadziała.

Ten post edytował lipek3 22.01.2013, 20:03:37
Go to the top of the page
+Quote Post
mistrzuni0
post 23.01.2013, 16:00:51
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.01.2013

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


error 404 dla powyższego linku, możesz poprawić?

Dalej nie ogarniam kuwety z tym sqlem.
W nadziei, że to coś pomoże, zainstalowałem Apache w wersji 2.2 i php w wersji 5.3. MySql nie zmieniałem.


w php.ini zmienilem zawartość na następującą:

Kod
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
;   extension=modulename.extension
;
; For example, on Windows:
;
extension=php_mysql.dll
extension_dir="C:\PHP\ext"

log_errors=On
error_log="C:\Windows\temp\php-errors.log"


Ale dalej nic z tego. Teraz w nowszym php wywala mi po prostu więcej błędów zamiast jednej linijki ;p

Cytat
Warning: mysql_connect() [function.mysql-connect]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in C:\Program Files\Apache Software Foundation\Apache2.2\test\createmovie.php on line 7

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Nieznany host. in C:\Program Files\Apache Software Foundation\Apache2.2\test\createmovie.php on line 7

Warning: mysql_connect() [function.mysql-connect]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in C:\Program Files\Apache Software Foundation\Apache2.2\test\createmovie.php on line 7

Warning: mysql_connect() [function.mysql-connect]: [2002] php_network_getaddresses: getaddrinfo failed: Nieznany host. (trying to connect via tcp://localhostkrystianhaslo:3306) in C:\Program Files\Apache Software Foundation\Apache2.2\test\createmovie.php on line 7

Warning: mysql_connect() [function.mysql-connect]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '1.0/no DST' instead in C:\Program Files\Apache Software Foundation\Apache2.2\test\createmovie.php on line 7

Warning: mysql_connect() [function.mysql-connect]: php_network_getaddresses: getaddrinfo failed: Nieznany host. in C:\Program Files\Apache Software Foundation\Apache2.2\test\createmovie.php on line 7
SprawdŸ połšczenie z serwerem.


Pomóżcie, Panowie smile.gif



Coś si ruszyło.
Powyższy natłok błędów udało się usunąć dodając na początku skryptu linijkę

date_default_timezone_set('Europe/Warsaw');

teraz całość wygląda w następujący sposób:
  1. <?php
  2.  
  3. date_default_timezone_set('Europe/Warsaw');
  4.  
  5. ini_set('display_errors','1');
  6.  
  7. //połączenie z bazą mysql
  8. $connect = mysql_connect("localhost", "krystian", "haslo") or
  9. die ("Sprawdź połączenie z serwerem.");
  10.  
  11. //utworz baze danych jezeli jeszcze nie istnieje
  12. $create = mysql_query("CREATE DATABASE IF NOT EXISTS moviesite")
  13. or die (mysql_error());
  14.  
  15. // wybierz nowo utworzoną bazę danych
  16. mysql_select_db("moviesite");
  17.  
  18. //utworz tabele movie
  19. $movie = "CREATE TABLE movie (
  20. movie_id int(11) NOT NULL auto_increment,
  21. movie_name varchar(255) NOT NULL,
  22. movie_type tinyint(2) NOT NULL defeault 0,
  23. movie_year int(4) NOT NULL defeault 0,
  24. movie_leadactor int(11) NOT NULL defeault 0,
  25. movie_director int(11) NOT NULL defeault 0,
  26. PRIMARY KEY (movie_id),
  27. KEY movie_type (movie_type.movie_year)
  28. )";
  29. $results = mysql_query($movie)
  30.  
  31. //utworz tabele movietype
  32. $movietype = "CREATE TABLE movietype (
  33. movietype_id int(11) NOT NULL auto_increment,
  34. movietype_label varchar(100) NOT NULL,
  35. PRIMARY KEY (movietype_id)
  36. )";
  37.  
  38. $results = mysql_query($movietype)
  39.  
  40. //utworz tabele people
  41. $people = "CREATE TABLE people (
  42. people_id int(11) NOT NULL auto_increment,
  43. people_fullname varchar(255) NOT NULL,
  44. people_isactor tinyint(1) NOT NULL defeault 0,
  45. people_isdirector tinyint(1) NOT NULL defeault 0,
  46. PRIMARY KEY (people_id)
  47. )";
  48.  
  49. $results = mysql_query($people)
  50.  
  51. echo "Poprawnie utworzono bazę danych filmow!";
  52.  
  53. ?>


Ale dalej nie działa jak należy i wypluwa przy próbie załadowania strony coś takiego:
Kod
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'defeault 0, movie_year int(4) NOT NULL defeault 0, movie_leadactor int(11) N' at line 4


Gdzie jest błąd? ; (
Go to the top of the page
+Quote Post
pedro84
post 23.01.2013, 16:06:04
Post #8





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


default, a nie defeault w CREATE TABLE.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
mistrzuni0
post 23.01.2013, 16:15:05
Post #9





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 22.01.2013

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


damn, taki babol [']

Coś ruszyło ale dalej nie bangla, pozmieniałem na default wszędzie i coś przy movie_year jest nie tak tym razem.

  1. //utworz tabele movie
  2. $movie = "CREATE TABLE movie (
  3. movie_id int(11) NOT NULL auto_increment,
  4. movie_name varchar(255) NOT NULL,
  5. movie_type tinyint(2) NOT NULL default 0,
  6. movie_year int(4) NOT NULL default 0,
  7. movie_leadactor int(11) NOT NULL default 0,
  8. movie_director int(11) NOT NULL default 0,
  9. PRIMARY KEY (movie_id),
  10. KEY movie_type (movie_type.movie_year)
  11. )";


Cytat
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.movie_year) )' at line 9


Haha, ok znalazłem. zamiast kropki powinien być przecinek, pdf ktory posiadam nie jest najwyżeszj jakości ;D
Dzięki za pomoc póki co! smile.gif

Ten post edytował mistrzuni0 23.01.2013, 16:20:02
Go to the top of the page
+Quote Post
pedro84
post 23.01.2013, 16:24:52
Post #10





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Konkretnie KEY(movie_type.movie_year), ma być movie_type,movie_year.

Naprawdę, poczytaj manual MySQL, bo to sensu nie ma.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 22:20