Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Access denied for user 'SYSTEM'@'localhost' (using password: NO)
Forum PHP.pl > Forum > Przedszkole
pawlin
witam, ucze sie php z ksiazki PHP i MySQL. Tworzenie stron WWW. Vademecum profesjonalisty. Wydanie czwarte a za serwer uzywam WampServer.
w rozdziale 28 jest zrobiona przykladowa ksiegarnia online i tam mam problem. po zalogowaniu sie na admina i mozliwosci np dodania kategorii wyskakuje blad:
Cytat
Warning: mysql_query() [function.mysql-query]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in D:\wamp\www\rozdzial_28\funkcje_admin.php on line 175

oraz
Cytat
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in D:\wamp\www\rozdzial_28\funkcje_admin.php on line 175

  1. $zapytanie = "select *
  2. from kategorie
  3. where nazwakat='".$nazwakat."'";
  4. $wynik = mysql_query($zapytanie); // TO JEST TA 175 linia
  5. if ((!$wynik) || (mysql_num_rows($wynik)!=0)) {
  6. return false;
  7. }


tak wyglada laczenie z baza

  1. function lacz_bd() {
  2. $wynik = new mysqli('localhost', 'ksiazka_kz', 'haslo', 'ksiazka_kz');
  3. if (!$wynik) {
  4. return false;
  5. }
  6. $wynik->autocommit(TRUE);
  7. return $wynik;
  8. }


a to bylo dodane przy tworzeniu bazy

  1. GRANT SELECT, INSERT, UPDATE, DELETE
  2. ON ksiazka_kz.*
  3. TO ksiazka_kz@localhost IDENTIFIED BY 'haslo';



ksiazki normalnie wyswietlaja sie z bazy danych, problem jest tylko z dodawaniem, edycja i usuwaniem.

prosze o pomoc
thek
No jak byk pisze. Łączy się z bazą za pomocą usera: SYSTEM, bez hasła. Na pewno dobrze wywołujesz podłączenie do bazy? Bo moim zdaniem coś nie teges winksmiley.jpg
pawlin
to jest skopiowane z przykladow od tej ksiazki, wiec polaczenie powinno byc dobre, tym bardziej ze przeciez pobieranie danych dziala. tylko czemu w tym wypadku nie dziala i czemu loguje sie akurat przez usera SYSTEM? hasla do mysql nie mam ustawionego, wiec powinno dzialac.
thek
Pokaż kawałek kodu gdzie masz to użyte, bo jak dla mnie to nigdzie nie używasz w pliku łączenia z baza, tylko od razu walisz zapytanie. Jeśli zamknięte masz drzwi to próbujesz przez nie przejść czy będziesz starał najpierw je otworzyć? winksmiley.jpg Bo jak dla mnie uparcie próbujesz przez nie przejść bez otwierania (wywołania połączenia z bazą). Co z tego, że zaincludujesz plik z łączeniem, skoro niekoniecznie do łączenia dochodzi, bo funkcji możesz nie wywoływać.
pawlin
tutaj np dodanie kategorii

  1. function dodaj_kat($nazwakat) {
  2.  
  3. $lacz = lacz_bd();
  4.  
  5. $zapytanie = "select *
  6. from kategorie
  7. where nazwakat='".$nazwakat."'";
  8. $wynik = mysql_query($zapytanie);
  9. if ((!$wynik) || (mysql_num_rows($wynik)!=0)) {
  10. return false;
  11. }
  12.  
  13.  
  14. $zapytanie = "insert into kategorie values
  15. ('', '".$nazwakat."')";
  16. $wynik = mysql_query($zapytanie);
  17. if (!$wynik) {
  18. return false;
  19. } else {
  20. return true;
  21. }
  22. }


tak wyglada laczenie z baza
  1. function lacz_bd() {
  2. $wynik = new mysqli('localhost', 'ksiazka_kz', 'haslo', 'ksiazka_kz');
  3. if (!$wynik) {
  4. return false;
  5. }
  6. $wynik->autocommit(TRUE);
  7. return $wynik;
  8. }


a to jeszcze bylo dodane przy tworzeniu bazy

  1. GRANT SELECT, INSERT, UPDATE, DELETE
  2. ON ksiazka_kz.*
  3. TO ksiazka_kz@localhost IDENTIFIED BY 'haslo';


pozdrawiam

a moze to ma cos wspolnego z tym, ze te tabele sa typu InnoDB ?


  1. CREATE DATABASE ksiazka_kz;
  2.  
  3. USE ksiazka_kz;
  4.  
  5. CREATE TABLE klienci
  6. (
  7. idklienta int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  8. nazwisko char(60) NOT NULL,
  9. adres char(80) NOT NULL,
  10. miasto char(30) NOT NULL,
  11. wojew char(20),
  12. kod_poczt char(10),
  13. kraj char(20) NOT NULL
  14. ) type=InnoDB;
  15.  
  16. CREATE TABLE zamowienia
  17. (
  18. idzamowienia int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  19. idklienta int UNSIGNED NOT NULL REFERENCES klienci(idklienta),
  20. wartosc float(6,2),
  21. DATA date NOT NULL,
  22. stan_zam char(10),
  23. dos_nazwisko char(60) NOT NULL,
  24. dos_adres char(80) NOT NULL,
  25. dos_miasto char(30) NOT NULL,
  26. dos_wojew char(20),
  27. dos_kod_poczt char(10),
  28. dos_kraj char(20) NOT NULL
  29. ) type=InnoDB;
  30.  
  31. CREATE TABLE ksiazki
  32. (
  33. isbn char(13) NOT NULL PRIMARY KEY,
  34. autor char(100),
  35. tytul char(100),
  36. idkat int UNSIGNED,
  37. cena float(4,2),
  38. opis varchar(255)
  39. ) type=InnoDB;
  40.  
  41. CREATE TABLE kategorie
  42. (
  43. idkat int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  44. nazwakat char(60) NOT NULL
  45. ) type=InnoDB;
  46.  
  47. CREATE TABLE produkty_zamowienia
  48. (
  49. idzamowienia int UNSIGNED NOT NULL REFERENCES zamowienia(idzamowienia),
  50. isbn char(13) NOT NULL REFERENCES ksiazki(isbn),
  51. cena_produktu float(4,2) NOT NULL,
  52. ilosc tinyint UNSIGNED NOT NULL,
  53. PRIMARY KEY (idzamowienia, isbn)
  54. ) type=InnoDB;
  55.  
  56. CREATE TABLE admin
  57. (
  58. nazwa_uz char(16) NOT NULL PRIMARY KEY,
  59. haslo char(40) NOT NULL
  60. );
  61.  
  62. GRANT SELECT, INSERT, UPDATE, DELETE
  63. ON ksiazka_kz.*
  64. TO ksiazka_kz@localhost IDENTIFIED BY 'haslo';



dodalem tez haslo do mysql, w plikach konfiguracyjnych i nic, dalej to samo:(
glh
Przy łączeniu korzystasz z mysqli, a zapytania wysyłasz używając mysql.
Albo mysqli albo mysql. Zdecyduj się.
Może w tym tkwi problem.
pawlin
masz racje, teraz dziala smile.gif ja to skopiowalem z ksiazki i oni tam tak namieszane maja. wielkie dzieki za pomoc 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.