Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Tworzenie tabel w bazie
Forum PHP.pl > Forum > Przedszkole
andrzej_
Pytanko, jako próbuje dodać kilka tabel do bazy mysql poprzez php logicznie podchodząc robię to tak:

[przykładowy kod]
  1. include("../include/config.php");
  2.  
  3. $sql = "
  4. CREATE TABLE IF NOT EXISTS `dcms_admins` (
  5. `id` int(11) NOT NULL AUTO_INCREMENT,
  6. `nick` varchar(25) DEFAULT NULL,
  7. `email` varchar(25) DEFAULT NULL,
  8. `pass` varchar(60) DEFAULT NULL,
  9. `name` varchar(30) DEFAULT NULL,
  10. `avatar` varchar(30) DEFAULT NULL,
  11. `date_reg` varchar(30) DEFAULT NULL,
  12. `status` varchar(5) DEFAULT NULL,
  13. PRIMARY KEY (`id`)
  14. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  15.  
  16. CREATE TABLE IF NOT EXISTS `dcms_articles` (
  17. `id` int(11) NOT NULL AUTO_INCREMENT,
  18. `title` varchar(255) NOT NULL,
  19. `content` text NOT NULL,
  20. `date` date NOT NULL,
  21. `plus` int(10) NOT NULL,
  22. `minus` int(10) NOT NULL,
  23. `tag` varchar(255) NOT NULL,
  24. `content2` text NOT NULL,
  25. PRIMARY KEY (`id`)
  26. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  27.  
  28.  
  29. CREATE TABLE IF NOT EXISTS `dcms_comments` (
  30. `id` int(11) NOT NULL AUTO_INCREMENT,
  31. `nick` varchar(255) NOT NULL DEFAULT 'anonymous',
  32. `date` date NOT NULL,
  33. `art_id` int(3) NOT NULL,
  34. `content` text NOT NULL,
  35. `plus` int(5) NOT NULL,
  36. `minus` int(5) NOT NULL,
  37. PRIMARY KEY (`id`)
  38. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  39.  
  40.  
  41. CREATE TABLE IF NOT EXISTS `dcms_news` (
  42. `id` int(11) NOT NULL AUTO_INCREMENT,
  43. `title` varchar(255) NOT NULL,
  44. `content` text NOT NULL,
  45. `date` date NOT NULL,
  46. `plus` int(10) NOT NULL,
  47. `minus` int(10) NOT NULL,
  48. `tag` varchar(255) NOT NULL,
  49. `content2` text NOT NULL,
  50. PRIMARY KEY (`id`)
  51. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
  52.  
  53. ";
  54. mysql_query($sql, $connection);
  55.  
  56. echo "DB created";


Z tym, że coś się dzieje po pierwszej tabeli, jeżeli w zmiennej $sql mam tylko:

  1. CREATE TABLE IF NOT EXISTS `dcms_admins` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nick` varchar(25) DEFAULT NULL,
  4. `email` varchar(25) DEFAULT NULL,
  5. `pass` varchar(60) DEFAULT NULL,
  6. `name` varchar(30) DEFAULT NULL,
  7. `avatar` varchar(30) DEFAULT NULL,
  8. `date_reg` varchar(30) DEFAULT NULL,
  9. `status` varchar(5) DEFAULT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


działa, jeżeli są następne - nie. Co mogę tutaj robić źle? Chodzi o średniki?
Wicepsik
Temat: Jak poprawnie zadac pytanie
andrzej_
Rozumiem, że chodzi o tą część:

Cytat
Wykonywanie zapytań do bazy
Jeśli wykonujesz jakieś zapytanie do bazy danych i w wyniku tego nie masz spodziewanych wyników, sprawdź dokładnie jak to zapytanie wygląda oraz czy baza danych nie zwróciła błędu. Dla prostych instrukcji komunikacji z bazą mysql wystarczy użyć mysql_error() by zobaczyć ostatnio zwrócony błąd przez bazę. Dla innych baz lub innych sposobów komunikacji - zajrzyj do dokumentacji by dowiedzieć się jakie funkcje zwracają błędy bazy danych.


  1. $sql = 'jakieś zapytanie';
  2. echo 'ZAPYTANIE:'.$sql;
  3. mysql_query($sql) or die('BŁĄD:'.mysql_error());


Możesz również skopiować wywietlone zapytanie i wykonać je w programie do obsługi baz danych, np. phpMyAdmin czy MySQL QueryBrowserze. Zobaczysz, czy Twoje zapytanie na pewno wykonuje się poprawnie i czy zwraca to czego oczekujesz.


Faktycznie, mój błąd.

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 'CREATE TABLE IF NOT EXISTS `dcms_articles` ( `id` int(11) NOT NULL AUTO_INCREM' at line 13


  1. `id` int(11) NOT NULL AUTO_INCREMENT,


To jest linijka powodująca crasha, jednak całość zapytania sql testowałem w phpmyadminie na serwerze na którym wykonuje skrypt, i tam nie ma problemów.
nospor
ty dla mysql_query() zapodajesz kilka zapytań na raz. mysql_query() pozwala na wykonanie TYLKO JEDNEGO zapytania naraz smile.gif
"siara - i wszystko jasne" winksmiley.jpg
andrzej_
Dzięki za odpowiedź smile.gif. Ciągle się uczę.
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.