Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][SQLite][MySQL]Konfiguracja install.php
Forum PHP.pl > Forum > Przedszkole
viamarimar
Robie plik instalacyjny ktory ma sluzyc do instlacji cms. Nie wiem czy robie to poprawnie bardziej na logike. Uzytkownik podaje dane zatwierdza moze automatycznie skopiowac i wkleic do pliku lub plik mu sie utworzy z automatu i teraz krok nastepny towrza mu sie tabele w bazie.

Wykonuje to na zasadzie

  1. $s=zapytania
  2.  


problem mam wlascie z tymi zapytaniami? sa czystko nawet importowane z pma i nie dzialaja moze ktos w tym pomoc?


blad wyswietla:

  1. 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 `galeria` ( `id` int(11) NOT NULL, `login` varcha' at line 16


  1. $s = "
  2. CREATE TABLE IF NOT EXISTS `event` (
  3. `id` int(11) NOT NULL,
  4. `login` varchar(100) NOT NULL,
  5. `data` datetime NOT NULL,
  6. `data_wydarzenia` date NOT NULL,
  7. `tytul` varchar(255) NOT NULL,
  8. `opis` text NOT NULL,
  9. `aktywny` int(11) NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM AUTO_INCREMENT=79 DEFAULT CHARSET=utf8;
  12.  
  13.  
  14.  
  15.  
  16.  
  17. CREATE TABLE IF NOT EXISTS `galeria` (
  18. `id` int(11) NOT NULL,
  19. `login` varchar(50) NOT NULL,
  20. `pelnanazwa` varchar(10000) NOT NULL,
  21. `kodowanazwa` varchar(10000) NOT NULL,
  22. `pojemnosc` int(11) NOT NULL,
  23. `typ` varchar(255) NOT NULL,
  24. `data` datetime NOT NULL,
  25. `aktywny` int(11) NOT NULL,
  26. `ile` int(11) NOT NULL,
  27. `miniatura` varchar(10000) NOT NULL
  28. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  29.  
  30.  
  31.  
  32.  
  33. ";


w pma normalnie sie dodaja..

probowalem tez tak:
  1. CREATE TABLE IF NOT EXISTS `galeria` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(50) NOT NULL,
  4. `pelnanazwa` varchar(10000) NOT NULL,
  5. `kodowanazwa` varchar(10000) NOT NULL,
  6. `pojemnosc` int(11) NOT NULL,
  7. `typ` varchar(255) NOT NULL,
  8. `data` datetime NOT NULL,
  9. `aktywny` int(11) NOT NULL,
  10. `ile` int(11) NOT NULL,
  11. `miniatura` varchar(10000) NOT NULL
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


blad podobny

  1. 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 `galeria` ( `id` int(11) NOT NULL AUTO_INCREMENT,' at line 16
fastlone
Wywołaj każde z tych zapytań osobno.
viamarimar
tabela event sie tworzy tabela galeria ma problem bledy sa powyzej
com
hmm:
  1. CREATE TABLE IF NOT EXISTS `galeria` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `login` varchar(50) NOT NULL,
  4. `pelnanazwa` text NOT NULL,
  5. `kodowanazwa` text NOT NULL,
  6. `pojemnosc` int(11) NOT NULL,
  7. `typ` varchar(255) NOT NULL,
  8. `data` datetime NOT NULL,
  9. `aktywny` int(11) NOT NULL,
  10. `ile` int(11) NOT NULL,
  11. `miniatura` text NOT NULL,
  12. PRIMARY KEY (`id`)
  13. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


btw w pma się też nie dodaje tak jak miałeś, bo nie da się stworzyć varchar o długości 10000
viamarimar
-

//tak to rozwiazalo problem

TEXT Długość łańcucha +2 bajty Tekst o maksymalnej długości 65 535 znaków.

Czy to prawda? ze bez ustalania wartosci wpisuje sie tyle znakow?
com
http://stackoverflow.com/questions/6766781...mysql-type-text wink.gif

przeważnie tworzy sie bloba dla obrazków wink.gif
viamarimar
no nie wiedzialem, przyda sie taka widza


jeszcze jedn kwiatek sie trafil:
  1. CREATE TABLE IF NOT EXISTS `liczniki` (
  2. `id` int(11) NOT NULL,
  3. `licznik` int(11) NOT NULL DEFAULT '0',
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  6.  
  7. INSERT INTO `liczniki` (`id`, `licznik`) VALUES (1, 0),
  8. (2, 0),
  9. (3, 0);


  1. 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 'INSERT INTO `liczniki` (`id`, `licznik`) VALUES (1, 0), (2, 0), (3, 0)' at line 7


w pma

  1. #1062 - Duplicate entry '1' for key 'PRIMARY'


blad jest w insercie jakis ale o co mu chodzi nie wiem

rozpisanie na 3 osobne typu

INSERT INTO `liczniki` (`id`, `licznik`) VALUES (1, 0);
INSERT INTO `liczniki` (`id`, `licznik`) VALUES (2, 0);
INSERT INTO `liczniki` (`id`, `licznik`) VALUES (3, 0);

tez nic nie daje
com
duplikujesz wpisy dla indexu nr 1, bo już taki istnieje, nie masz auto_increment ustawione wiec nie mogą sie powtarzać, bo on sam sobie tego nie zwiekszy
viamarimar
zrobilem tak:
  1. CREATE TABLE IF NOT EXISTS `liczniki` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `licznik` int(11) NOT NULL DEFAULT '0',
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  6.  
  7. INSERT INTO `liczniki` (`id`, `licznik`) VALUES (1, 0),(2, 0),(3, 0);


czyli auto increment jest i blad ten sam
  1. 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 'INSERT INTO `liczniki` (`id`, `licznik`) VALUES (1, 0)' at line 7
  2. ‌
com
usuń najpierw te tabele jak coś chcesz w niej zmieniać smile.gif

albo zrób na niej alter biggrin.gif ale tak czy owak wpis nr 1 już istnieje tongue.gif
viamarimar
niestety jeszcze nie do konca ok.

Wiesz to plik konfiguracyjny a ja tak robie to na chybil trafil troche.Nie mam jakiegos algorytmu tylko tak.

Czyli najlepierw musze usunac wszystkie tabele ktore chce stworzyc i utowrzyc je na nowo?

CREATE TABLE IF NOT EXISTS - nie zapewnia mi stworzenia tabeli?

a moze zapwenia gdy nie istnieje ale nie modyfikacje hmm.. jakies pomysly na rozwiazanie tego?

tak na marginesie
tak liczba auto inc .. =1 oznacza od jakiego numeru idzie numeracja?
  1. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;




edit.
dziala jak usuniesz z pma to tworzy sie tabela i dodaje rektord
z poziomu php juz nie chce sie wykonac ?
  1. CREATE TABLE IF NOT EXISTS `liczniki` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `licznik` int(11) NOT NULL DEFAULT '0',
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  6.  
  7. INSERT INTO `liczniki` (`id`, `licznik`) VALUES (1, 0);


ps.

jaka jest roznica miedzy innoDB a myISAM czy jakos tak
com
jest tak jak same te polecenie mówi CREATE TABLE IF NOT EXISTS czyli utwórz tabele jeśli nie istnienie, wiec jak istnieje to on ten cały blok pomija, żeby zmodyfikować tabele używasz polecenia alter table ...
tak zgadza się od tego nr zacznie automatycznie numerować

a jak to tworzysz z poziomu php?

http://dimitrik.free.fr/blog/archives/11-0...11-30-2012.html
viamarimar
no ok ale w tym momencie mam utworzona tabele z tym kluczem auto increment a on i tak nie chce mi dodawac rekordow w ten sposob? tabela jest pusta wiec alerta nie musze uzywac raczej, rekordy dodaje sie insertem.

Aktualny blad i chyba od poczatku taki sam:

  1. 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 'INSERT INTO `liczniki` (`id`, `licznik`) VALUES ('3', '0')' at line 7t4
  2. ?


  1.  
  2.  
  3.  
  4. $file='ustawienia/x.php';
  5. if (file_exists($file)) {
  6. #odczyt
  7. if (is_readable($file)) {
  8. include_once($file);
  9. }
  10. else {
  11. exit('<p>Plik konfiguracyjny jest nie do odczytu!</p>');
  12.  
  13. }
  14. #zapis
  15. if (is_writable($file)) {
  16. include_once($file);
  17. }
  18. else {
  19. exit('<p>Plik konfiguracyjny jest nie do zapisu!</p>');
  20. }
  21.  
  22. $t4 ="
  23. CREATE TABLE IF NOT EXISTS `liczniki` (
  24. `id` int(11) NOT NULL AUTO_INCREMENT,
  25. `licznik` int(11) NOT NULL DEFAULT '0',
  26. PRIMARY KEY (`id`)
  27. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  28.  
  29. INSERT INTO `liczniki` (`id`, `licznik`) VALUES ('3', '0');
  30. ";
  31.  
  32. mysql_query($t4) or die(mysql_error()."t4");
  33. echo 'Struktura tabel utworzona!';
  34. }
  35. else{
  36. header("location: install.php");
  37. }
  38.  


Wszystkie inne zapytania sie wykonuja raczej. Z tym jest klopot(poki co)
com
jakbyś mógł wkleić fragment z tym kodem gdzie to tworzysz smile.gif
viamarimar
wkleilem wink.gif
com
  1. $t4 ="
  2. CREATE TABLE IF NOT EXISTS `liczniki` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `licznik` int(11) NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`id`)
  6. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  7.  
  8. INSERT INTO `liczniki` (`id`, `licznik`) VALUES ('3', '0');
  9. ";
  10.  
  11. mysql_query($t4) or die(mysql_error()."t4");


nwm czy to bład tu sie wkrad podczas wklejania czy faktycznie tak miałeś ale zobacz to smile.gif

no i druga kwestia w php nie wykonasz tych 2 operacji naraz w taki sposób smile.gif
viamarimar
  1. 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 'INSERT INTO `liczniki` (`id`, `licznik`) VALUES ('3', '0')' at line 7


to samo ;/
com
up smile.gif
  1. $t4 = "CREATE TABLE IF NOT EXISTS `liczniki` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `licznik` int(11) NOT NULL DEFAULT '0',
  4. PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  6. ";
  7. mysql_query($t4) or die(mysql_error()."t4");
  8. $t5 ="INSERT INTO `liczniki` (`licznik`) VALUES ('0');";
  9. mysql_query($t5) or die(mysql_error()."t5");


tak zadziała smile.gif
viamarimar
ale czlowiek sie z glupoty umie cieszyc haha.gif

  1. $t5 ="INSERT INTO `liczniki` (`licznik`) VALUES ('0');";


tylko dlaczego tak, niby sa auto id ale jak sie dodaje kolejny w zapytaniu to powinno dzialac

dwa jak nie bylo auto a dwalo sie zapytanie to tez powinno dodawac?

czy alter dziala na zasadzie jesli jest to zmien jesli nie ma to utworz?
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.