Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql] Problem z utworzeniem tabeli w php/mysql
Setesh
post
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


Witam.

Mam problem z utworzeniem tabeli w php - niby przykład jest ok ale coś mi nie działa utworzenie tabeli ponieważ mam jakiś błąd w składni - możeci mi podpowiedzieć gdzie ?

Błąd :

1064: 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 ')' at line 1

składnia polecenia :
  1. $query ="user_number MEDIUMINT(10) DEFAULT '0' NOT NULL AUTO_INCREMENT,";
  2. $query.="user_id VARCHAR(8) BINARY NOT NULL,";
  3. $query.="user_name VARCHAR(30) NOT NULL,";
  4. $query.="user_password VARCHAR(20) BINARY NOT NULL,";
  5. $query.="user_country VARCHAR(50) NOT NULL,";
  6. $query.="user_email VARCHAR(50) NOT NULL,";
  7. $query.="user_profile TEXT NOT NULL,";
  8. $query.="user_registre_date DATE DEFAULT '0000-00-00' NOT NULL,";
  9. $query.="user_last_access_time TIMESTAMP(14),";
  10. $query.="PRIMARY KEY(user_id),";
  11. $query.="UNIQUE user_number(user_number)";


Liczę na waszą pomoc bo takie ponoć podstawowe i proste zapytanie a nie wiem co jest w nim źle (IMG:style_emoticons/default/sad.gif)

Jeżeli ktoś może mi jeszcze poradzić jak podzielić bazę danych odnośnie informacji o użytkowniku to też będę wdzięczny.

Docelowo chcę stworzyć 2 tabele dla użytkownika - w pierwszej mają być wszelkie informacje jakie użytkownik będzie podawał podczas rejestracji a w drugiej będą inne informacje powiązane z użytkownikiem i innymi danymi.

Ten post edytował Setesh 21.01.2011, 18:27:53
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A gdzie zjadles początek, czyli
CREATE TABLE blabla
?
Go to the top of the page
+Quote Post
Setesh
post
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


  1. $dbname = "komoorkowo";
  2. $user_tablename = "user";
  3.  
  4. $query ="user_number MEDIUMINT(10) DEFAULT '0' NOT NULL AUTO_INCREMENT,";
  5. $query.="user_id VARCHAR(8) BINARY NOT NULL,";
  6. $query.="user_name VARCHAR(30) NOT NULL,";
  7. $query.="user_password VARCHAR(20) BINARY NOT NULL,";
  8. $query.="user_country VARCHAR(50) NOT NULL,";
  9. $query.="user_email VARCHAR(50) NOT NULL,";
  10. $query.="user_profile TEXT NOT NULL,";
  11. $query.="user_registre_date DATE DEFAULT '0000-00-00' NOT NULL,";
  12. $query.="user_last_access_time TIMESTAMP(14),";
  13. $query.="PRIMARY KEY(user_id),";
  14. $query.="UNIQUE user_number(user_number)";
  15.  
  16. $link_id = db_connect();
  17. if(!$link_id) die(sql_error());
  18.  
  19. if(!mysql_query("CREATE TABLE $user_tablename ($query)")) die(sql_error()); // JEST TUTAJ :)
  20. else echo "utworzono tabele";


// EDIT :

query -> $query // poprawiłem przy wywołaniu

teraz mam inny błąd (IMG:style_emoticons/default/sad.gif)

"1067: Invalid default value for 'user_number'"

(IMG:style_emoticons/default/sad.gif)

Jakby co będę około 15:00 to zobaczę co jeszcze dopatrzę się ale nie wiem jaka inna wartość może być poza "0" dla auto inc kiedy nie może być też null (IMG:style_emoticons/default/sad.gif)

Ten post edytował Setesh 21.01.2011, 12:59:51
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




od kiedy dla MEDIUMINT domyslna wartoscią jest tekst?

nie '0'
a: 0
Go to the top of the page
+Quote Post
Setesh
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


$query ="user_number MEDIUMINT(10) DEFAULT 0 NOT NULL AUTO_INCREMENT,";

zmieniłem i nadal że zła wartość (IMG:style_emoticons/default/sad.gif)
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




autoincrement nie ma domyslnej wartosci (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Setesh
post
Post #7





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


$query ="user_number MEDIUMINT(10) NOT NULL AUTO_INCREMENT,";

no i gitara (IMG:style_emoticons/default/guitar.gif)

Dzięki wielkie (IMG:style_emoticons/default/smile.gif) Zawsze to trochę się nauczyłem (IMG:style_emoticons/default/smile.gif)

Ten post edytował Setesh 21.01.2011, 13:06:55
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1)
Cytat
[początkujący]

Co to za tag? Tag ma odzwierciedlac rodzaj problemu a nie Twoj stan wiedzy. popraw

2)
nie:MEDIUMINT(10)
a:MEDIUMINT
10 niczemu nie sluzy.

3)
Niby robisz autoincrement user_number, ale jako klucza głównego uzywasz user_id i to na dodatek tekstu. Czemu to niby ma sluzyc? Zazwyczaj kluczem głównym jest autoincrement

4)
user_password VARCHAR(20)
haslo trzymasz jawnie? Zle
Haslo trzymasz w hashu? To po co zmienna dlugosc pola?
Go to the top of the page
+Quote Post
Setesh
post
Post #9





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 2.10.2006
Skąd: Wrocław

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


  1. $dbname = "komoorkowo";
  2. $user_tablename = "user";
  3.  
  4. $query.="user_id MEDIUMINT NOT NULL AUTO_INCREMENT,";
  5. $query.="user_name VARCHAR(30) NOT NULL,";
  6. $query.="user_password VARCHAR(20) BINARY NOT NULL,";
  7. $query.="user_country VARCHAR(50) NOT NULL,";
  8. $query.="user_email VARCHAR(50) NOT NULL,";
  9. $query.="user_profile TEXT NOT NULL,";
  10. $query.="user_registre_date DATE DEFAULT '0000-00-00' NOT NULL,";
  11. $query.="user_last_access_time TIMESTAMP(14),";
  12. $query.="PRIMARY KEY(user_id),";
  13. $query.="UNIQUE user_number(user_number)";
  14.  
  15. $link_id = db_connect();
  16. if(!$link_id) die(sql_error());
  17.  
  18. if(!mysql_query("CREATE TABLE $user_tablename ($query)")) die(sql_error());
  19. else echo "utworzono tabele";


Ok poprawiłem co się dało (mam nadzieję że dobrze) ale nie wiem jak z hasłem zrobić sad.gif Mógłbym prosić o gotowy przykład jak to zrobić aby było zahashowane ? Czytałem o opcji
  1. password($user_password);
i że ponoć samo hash załatwia (a może coś mi się pomyliło (IMG:style_emoticons/default/sad.gif) )

Zmieniłem unikalny element na user_email i user_name (wydawało się najrozsądniejsze) :

  1. $query.="UNIQUE user_email(user_email, user_name)";


Obecne zapytanie wygląda tak :

  1. $query.="user_id MEDIUMINT NOT NULL AUTO_INCREMENT,";
  2. $query.="user_email VARCHAR(50) NOT NULL,";
  3. $query.="user_password CHAR BINARY NOT NULL,";
  4. $query.="user_name VARCHAR(30) NOT NULL,";
  5. $query.="user_country VARCHAR(50) NOT NULL,";
  6. $query.="user_profile TEXT NOT NULL,";
  7. $query.="user_registre_date DATE DEFAULT '0000-00-00' NOT NULL,";
  8. $query.="user_last_access_time TIMESTAMP(14),";
  9. $query.="PRIMARY KEY(user_id),";
  10. $query.="UNIQUE user_email(user_email, user_name)";


Zamieniłem user_password z
  1. VARCHAR(20) na CHAR
(nie wiem czy dobrze).
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: 23.08.2025 - 23:49