Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Dodawanie Tabel w PHP
Forum PHP.pl > Forum > Przedszkole
krzychu0808
Witam....
chce się nauczyć obsługi baz danych znalazłem w domu książkę Helion "Od Podstaw PHP4" wydanie 2000r. tongue.gif
tam jest opis jak zainstalować bazę danych na swoim komputerze itp... ale ja mam bazę danych na dydku i raczej nie mogę obsługiwać tej bazy z pod wiersza poleceń ale w książce też jest napisane jak utworzyć tabele i bazę przez php. Już zrobiłem obsługę błędów połączyłem się z bazą... i chcę wrzucić tabele do bazy.. zrobiłem tak:
plik: create_db.php
  1. <?
  2. include "./common_db.inc";
  3.  
  4. $dbname = "xxxxxxxxxxxxxxxxxxxxxxxxx";
  5. $user_tablename = 'user';
  6. $user_table_def = "usernumber MEDIUMINT(10) DEFAULT '0' NOT NULL AUTO_INCREMENT,";
  7. $user_table_def .= "userid VARCHAR(8) BINARY NOT NULL,";
  8. $user_table_def .= "userpassword VARCHAR(20) BINARY NOT NULL,";
  9. $user_table_def .= "username VARCHAR(30) NOT NULL,";
  10. $user_table_def .= "usercountry VARCHAR(50) NOT NULL,";
  11. $user_table_def .= "useremail VARCHAR(50) NOT NULL,";
  12. $user_table_def .= "userprofile TEXT NOT NULL,";
  13. $user_table_def .= "registerdate DATE DEFAULT '0000-00-00' NOT NULL,";
  14. $user_table_def .= "lastaccesstime TIMESTAMP(14),";
  15. $user_table_def .= "PRIMARY KEY (userid),";
  16. $user_table_def .= "UNIQUE usernumber (usernumber)";
  17.  
  18. $access_log_tablename = "access_log";
  19. $access_log_table_def = "page VARCHAR(250) NOT NULL,";
  20. $access_log_table_def .= "userid VARCHAR(8) BINARY NOT NULL,";
  21. $access_log_table_def .= "visitcount MEDIUMINT(5) DEFAULT '0' NOT NULL,";
  22. $access_log_table_def .= "accessdate TIMESTAMP(14),KEY page (page),";
  23. $access_log_table_def .= "PRIMARY KEY (userid, page),";
  24.  
  25. $link_id = db_connect();
  26. if(!$link_id) die(sql_error());
  27.  
  28. if(!mysql_select_db($dbname)) die(sql_error());
  29.  
  30. if(!mysql_query("CREATE TABLE $user_tablename ($user_table_def)")) die(sql_error());
  31.  
  32. if(!mysql_query("CREATE TABLE $access_log_tablename ($access_log_table_def)")) die(sql_error());
  33.  
  34. echo "Udało się stworzyć tabele $user_tablename oraz $access_log_tablename.";
  35.  
  36.  
  37. ?>


common_db.inc

  1. <?
  2. $dbhost = 'localhost';
  3. $dbusername = 'xxxxxxxxxxxxxx';
  4. $dbuserpassword = 'xxxxxxxxxxxxxx';
  5. $default_dbname = 'xxxxxxxxxxxxxx';
  6.  
  7. $MYSQL_ERRNO = '';
  8. $MYSQL_ERROR = '';
  9.  
  10. function db_connect() {
  11. global $dbhost, $dbusername, $dbuserpassword, $default_dbname;
  12. global $MYSQL_ERRNO, $MYSQL_ERROR;
  13.  
  14. $link_id = mysql_connect($dbhost, $dbusername, $dbuserpassword);
  15. if(!$link_id) {
  16. $MYSQL_ERRNO = 0;
  17. $MYSQL_ERROR = "Nie udało się nawiązać połączenia z $dbhost.";
  18. return 0;
  19. }
  20. else if (empty($dbhost) && !mysql_select_db($default_dbname)) {
  21. $MYSQL_ERRNO = mysql_errno();
  22. $MYSQL_ERROR = mysql_error();
  23. return 0;
  24. }
  25. else return $link_id;
  26. }
  27. function sql_error() {
  28. global $MYSQL_ERRNO, $MYSQL_ERROR;
  29.  
  30. if(empty($MYSQL_ERROR)) {
  31. $MYSQL_ERRNO = mysql_errno();
  32. $MYSQL_ERROR = mysql_error();
  33. }
  34. return "$MYSQL_ERRNO: $MYSQL_ERROR";
  35. }
  36. ?>

Oczywiście x to tam dane były ;p

gdy załaduję pliki na serwer i odpalę create_db.php mam komunikat:
1067: Niewła?ciwa warto?ć domy?lna dla 'usernumber'
wyrzuciłem AUTO_INCREMENT z
  1. <?php
  2. $user_table_def = "usernumber MEDIUMINT(10) DEFAULT '0' NOT NULL AUTO_INCREMENT,";
  3. ?>

i odpaliłem znowu plik create_db.php
to mam komunikat: 1064: Something is wrong in your syntax obok ')' w linii 1

Ale gdy wchodzę w phpmyadmin to mam tabele user a w niej


AUTO_INCREMENT dodałem do usernumber przez phpadmin ale nie wiem co błędem :
1064: Something is wrong in your syntax obok ')' w linii 1

Jestem zielony proszę o pomoc...
nospor
Niewła?ciwa warto?ć domy?lna dla 'usernumber' - dales default '0', czyli domyslnie wartoscia dales tekst. a przeciez to liczba. Jak juz cos to default 0.
Pozatym skoro to autoincrement to default mozesz olac

Something is wrong in your syntax obok ')' - usun przecinek z definicji drugiej tabeli na koncu. Zapytanie nie moze konczyc sie przecinkiem
krzychu0808
Jeżeli ja mam baze u znajomego na dydyku jest możliwość edycji bazy danych przez MySQL monitor questionmark.gifquestionmark.gif?
nospor
to zalezy czy baza pozwala na połączenia z zewnątrz. Ale jesli to dedyk, to zapewne mozesz sam tak ustawic, bys mogl
krzychu0808
a jeżeli pozwala to jak to zrobić ;p questionmark.gifquestionmark.gif
nospor
uzywales juz wczesniej tego MySQL monitor? Na localhost? To masz tak samo zrobic łącząc sie z dedykiem, tylko ze zamiast host=localhost masz dac host = adresdobazynadedyku (IP, lub jakis adres),podac usera i haslo.
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.