Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Problem z korzystaniem z bazy danych
Forum PHP.pl > Forum > Przedszkole
mistrzuni0
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ą ; /
b4rt3kk
Czemu używasz kropek zamiast przecinek? Być może nie masz też praw dostępu do tego pliku.
pedro84
Stawiam na to
  1. mysql_erro()

Poza tym, logi coś mówią?

Włącz sobie wyświetlanie błędów.
tolomei
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
mistrzuni0
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.
lipek3
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.
mistrzuni0
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? ; (
pedro84
default, a nie defeault w CREATE TABLE.
mistrzuni0
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
pedro84
Konkretnie KEY(movie_type.movie_year), ma być movie_type,movie_year.

Naprawdę, poczytaj manual MySQL, bo to sensu nie ma.
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.