Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: zapytanie problem
Forum PHP.pl > Forum > Bazy danych > MySQL
breaked
Witam,
mam problem z wykonaniem zapytania.

oto fragment kodu pliku install.php
  1. print "Tworzenie bazy danych...";
  2. require '../db/db.php';
  3. $sqlfilename = "../install/mysql.sql";
  4. $sqlfile = fopen($sqlfilename, "r");
  5. $sqltext = fread($sqlfile, filesize($sqlfilename));
  6. fclose($sqlfile);
  7. dbconnection();
  8. $query = mysql_query($sqltext) or die ("Bład: Nie można wyprowadzić zapytania do bazy danych");
  9. print "Zakończone<br/>";


plik db.php
  1. <?php
  2.  
  3. require '../includes/config.php';
  4.  
  5. function dbconnection()
  6. {
  7. $db_connect = mysql_connect($_POST['dbhost'], $_POST['dbuser'], $_POST['dbpass']) or die ("Błąd: Nie można nawiązać połączenia z bazą danych!");
  8. $db_select = mysql_select_db($_POST['dbname']) or die ("Błąd: Nie można wybrać schematu bazy danych!");
  9. }
  10.  
  11. ?>


plik mysql.sql
  1. CREATE TABLE `aktywacja` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `user` varchar(15) NOT NULL DEFAULT '',
  4. `email` varchar(60) NOT NULL DEFAULT '',
  5. `pass` varchar(32) NOT NULL DEFAULT '',
  6. `aktyw` int(11) NOT NULL DEFAULT '0',
  7. `refs` int(11) NOT NULL DEFAULT '0',
  8. `ip` varchar(50) NOT NULL DEFAULT '',
  9. `data` date NOT NULL DEFAULT '0000-00-00',
  10. `lang` varchar(3) NOT NULL DEFAULT 'pl',
  11. PRIMARY KEY (`id`),
  12. KEY `user` (`user`)
  13. ) TYPE=MyISAM;
  14.  
  15. CREATE TABLE `players` (
  16. `id` int(11) NOT NULL AUTO_INCREMENT,
  17. `user` varchar(20) NOT NULL DEFAULT '',
  18. `email` varchar(60) NOT NULL DEFAULT '',
  19. `pass` varchar(32) NOT NULL DEFAULT '',
  20. `rank` varchar(20) NOT NULL DEFAULT '',
  21. KEY `user` (`user`),
  22. KEY `email` (`email`),
  23. KEY `id` (`id`)
  24. ) TYPE=MyISAM;


a w pliku config.php znajduje się host, użytkownik, hasło do bazy danych i nazwa.

przy włączaniu pliku install w trakcie wpisywania zapytanie wyskakuje błąd Nie można wyprowadzić zapytania do bazy danych"
coś nie tak jest z wprowadzeniem zapytania, bo łączy się dobrze...
nospor
Masz blad zapytania. Wyswietl go sobie a dowiesz sie co nie pasuje twojej bazie.
Tu masz napisane jak wyswietlic blad zapytania:
Temat: Jak poprawnie zada pytanie
breaked
taki błąd wyskakuje:


Tworzenie bazy danych...BŁĄD: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 `aktywacja` ( `id` int(11) NOT NULL auto_increment, `user`' at line 1

znam ang, ale tego nie moge ogarnąć ;P
pomóżcie winksmiley.jpg
nospor
W linku co ci podałem miałeś też napisane, ze masz wyswietlic sobie te zapytanie i zobaczyc jak wygląda a jesli tobie to nic nie mowi to nam moze coś powie.
Pokaz nam wiec jak wyglada to zapytanie, które próbujesz wykonac

edit: ale moja wróżka podpowiada mi ze ty w pliku masz kilka zapytan i próbujesz je wykonac wszystkie na raz przy pomocy jednego mysql_query(). A tak nie mozna.... smile.gif

edit2:
a już widzę treśc zapytania.... wykonujesz kilka zapytan przy pomocy mysql_query a tak nie mozna

edit3:
a co to za "\" na początku pliku mysql.sql ?
breaked
te "\" pojawiło się niechcący podczas kopiowania pliku na forum, zaraz poprawię winksmiley.jpg

to w takim razie jak podzielić te zapytania ?
nospor
Ten plik mysql.sql to ty tworzysz? To odzielaj w nim zapytania np. linią
######################
a następnie rob explode() na zawartosci pliku po tej linii i w tablicy otrzymasz pojednyczne zapytania. Nastepnie kazde z tych zapytan wykonaj przy pomocy mysql_query
breaked
  1. print "Tworzenie bazy danych...";
  2. require '../db/db.php';
  3. $sqlfilename = "../install/mysql.sql";
  4. $sqlfile = fopen($sqlfilename, "r");
  5. $sqltext = fread($sqlfile, filesize($sqlfilename));
  6. fclose($sqlfile);
  7. dbconnection();
  8. $table = explode("#", $sqltext);
  9. $query = count($table);
  10. for ($q = 0; $q < $query; $q++)
  11. {
  12. mysql_query($table[$q]) or die ('BŁAD:'.mysql_error());
  13. }
  14. print "Zakończone<br/>";


czyli coś takiego ? pytam, bo się już pogubiłem.
nospor
Cytat
czyli coś takiego ?
No jeśli zapytania oddzielasz tylko jednym znakiem # to tak, coś takiego.
Cytat
pytam, bo się już pogubiłem tongue.gif
I niby czemu ma służyć ten język na koncu? Nie mówię oczywiście o chamstwie/lekcewazeniu z Twojej strony bo to dość oczywiste (temu przecież służy język pokazywany osobie, która próbuje ci pomóc). Jest jeszcze jakis inny powód?
breaked
Tego emotka piszę z przyzwyczajenia, bo często go stawiam winksmiley.jpg
Wybacz, jeżeli Cię to uraziło.
I dziękuję za pomoc smile.gif

nadal się ten sam błąd pojawia. co robię źle ? ;/
nospor
  1. for ($q = 0; $q < $query; $q++)
  2. {
  3. echo $table[$q];
  4. mysql_query($table[$q]) or die ('BŁAD:'.mysql_error());
  5. }

Co się wyswietla?
breaked
Kod
Tworzenie bazy danych...??CREATE TABLE `aktywacja` ( `id` int(11) NOT NULL auto_increment, `user` varchar(15) NOT NULL default '', `email` varchar(60) NOT NULL default '', `pass` varchar(32) NOT NULL default '', `aktyw` int(11) NOT NULL default '0', `refs` int(11) NOT NULL default '0', `ip` varchar(50) NOT NULL default '', `data` datetime NOT NULL default '', `lang` varchar(3) NOT NULL default 'pl', PRIMARY KEY (`id`), KEY `user` (`user`) ) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=1; BŁAD: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 `aktywacja` ( `id` int(11) NOT NULL auto_increment, `user`' at line 1


edit:
do pliku mysql.sql dodałem na końcu zapytania PACK_KEYS=0 AUTO_INCREMENT=1 oraz zmieniłem date na datetime

edit2:
ogólnie zmieniłem lekko mysql.sql . zapytania ciągle są dwa. z grubsza jest podobny winksmiley.jpg
nospor
No nie widzisz ze przed zapytaniem pojawiają ci się znaki zapytania? To one teraz powodują błąd
breaked
tylko nie wiem co je wyświetla. w oba plikach ich nie ma...
nospor
Moze trim() pomoze
  1. for ($q = 0; $q < $query; $q++)
  2. {
  3. $zap = trim($table[$q]);
  4. echo $zap;
  5. mysql_query($zap) or die ('BŁAD:'.mysql_error());
  6. }
breaked
Dalej to samo, tylko bez tych znaków zapytania.

Kod
Tworzenie bazy danych...??CREATE TABLE `aktywacja` ( `id` int(11) NOT NULL auto_increment, `user` varchar(15) NOT NULL default '', `email` varchar(60) NOT NULL default '', `pass` varchar(32) NOT NULL default '', `aktyw` int(11) NOT NULL default '0', `refs` int(11) NOT NULL default '0', `ip` varchar(50) NOT NULL default '', `data` datetime NOT NULL default '0000-00-00 00:00:00', `lang` varchar(3) NOT NULL default 'pl', PRIMARY KEY (`id`), KEY `user` (`user`) ) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=1;BŁAD: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 `aktywacja` ( `id` int(11) NOT NULL auto_increment, `user`' at line 1


edit:
ja to robię na localhoście. to może być przyczyną ? wg mnie nie, ale wole się upewnić.
nospor
Wygląda jakbyś miał tam jeszcze jakieś znaki, niewidoczne dla oka ludzkiego winksmiley.jpg

Dla pewności wykonaj w mysql_query() z palucha to pierwsze zapytanie. Jeśli ci pójdzie to na 100% coś tam w tym pliku jeszczez jest. Może BOM?

nie, localhost nie ma tu nic do gadania
breaked
jak wpisałem ręcznie do mysql_query to zaszło.
w pma pojawiło się to co trzeba winksmiley.jpg
przedtem jeszcze konwertowałem na bez BOM'a. nic nie dało.
teraz lece do szkoły, potem jeszcze pokombinuje, chociaż wydaje mi się, że coś źle odczytuje ten plik...

edit:
już prawie działa smile.gif
ale ciągle się pojawia że albo zapytanie jest puste, albo że ta tabela już jest..
jak wyświetliłem zawartość $query to 41 pokazał, nie jestem pewien, ale chyba powinno być 2 ? bo dwa zapytania mam...

edit2:
i tabela aktywacja się pojawia, ale ta druga nie...

edit3:
usunąłem wyświetlanie błędów i działa smile.gif
konkretniej to wywaliłem or die

--------------------------------------


Nie chcę zakładać nowego tematu, tylko znowu napiszę tutaj. Mam problem może niekoniecznie z zapytaniem, ale z MySQL.

oto fragment pliku register.php
  1. else
  2. {
  3. $wynik = mysql_query("SELECT * FROM $tabela WHERE login='$login'");
  4. if (mysql_num_rows($wynik) <> 0) {
  5. $blad++;
  6. $smarty -> assign('error2', 'Podana nazwa użytkownika została już zajęta.');
  7. }
  8. }



i wyskakuje mi taki błąd:
mysql_num_rows(): supplied argument is not a valid MySQL result resource in [...]/register.php on line 37

nie wiem o co chodzi, kod jest na pewno poprawny.
nospor
masz blad zapytania. Wyswietl go. Jak wyswietlac bledy zapytania oraz same zapytania masz napisane tu:
Temat: Jak poprawnie zada pytanie
smile.gif
breaked
ok. już mam.
zmienna $tabela była źle zdefiniowana smile.gif
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.