Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Polaczenie z baza danych
Forum PHP.pl > Forum > Przedszkole
Gość_MK
Mam formulaz ktory przekazuje do pliku nazwijmy go polacz.php cztery zmienne:
$host, $login, $haslo, $nazwa.
Plik polacz.php wyglada nastepujaco:
Kod
$file=fopen("dane.dat","w");
fwrite($file,$host."\n");
fwrite($file,$nazwa."\n");
fwrite($file,$login."\n");
fwrite($file,$haslo);
fclose($file);

$file=fopen("dane.dat","r");
$host1=fgets($file);
$nazwa1=fgets($file);
$login1=fgets($file);
$haslo1=fgets($file);
fclose($file);

$db=mysql_connect($host1,$login1,$haslo1);
mysql_select_db($nazwa1,$db);


I tu pojawi sie problem. Przegladarka wywala nastepujacy komunikat:
Kod
Warning: mysql_connect(): Unknown MySQL Server Host 'localhost ' (11001) in c:\usr\krasnal\www\moje\funkcje.php on line 18

Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in c:\usr\krasnal\www\moje\funkcje.php on line 19

Wiem ze ten problem mozna rozwiazac na kilka innych sposobow. Mnie interesuje dlaczego w tym przypadku nie nastepuje nawiazanie polaczenia z baza danych.
Gdy pozbede sie zapisu i odczytu z pliku czyli plik pokaz.php wygladal by:
Kod
$db=mysql_connect($host,$login,$haslo);
mysql_select_db($nazwa,$db);

Wszystko dziala OK. Interesuje mnie dlaczego gdy pod zmienne wykozystywane w funkcji mysql_connect podstawiam jakis ciag znakow z pliku to nie jest on traktowany tak samo jak gdyby zmiennym wartosci zostaly przypisane recznie.
dr_bonzo
No przeciez pisze:
Unknown MySQL Server Host 'localhost '
biggrin.gif tam jest jeszcze spacja! ktorej byc nie powinno.
mdco
Po fclose($file) sprawdź co masz w zmiennej $host1:
  1. <?php
  2.  
  3. echo $host1;
  4.  
  5. ?>
Guest
dr_bonzo: tam nie ma zadnej spacji
mdco: we wszystkich zmiennych dane sie zgadzaja
crash
Widać wyraźnie spację, spróbuj podać normalnie adres do połączenia.
sf
  1. <?php
  2. $host1=trim(fgets($file));
  3. // do wszystkich elementow tak zrob
  4. ?>
Guest
Nie wiedzialem ze znak \n jest odczytywany jako spacja, sugerowalem sie zastosowaniem tego znaku z c++ gdzie osnacza on nowa linie. Dzieki wszystkim za pomoc.
sf
Nie jest odczytywany jako spacja lecz jako ten znak. Co powoduje, że są błędy podczas połączenia. Np. hasło jest takie "tajnehaslo\n" i ten ostatni znak też jest brany pod uwagę.
dr_bonzo
file() wlasnie nie pozbywa sie znakow \n. A ze wygladal jak spacja... no coz.
crash
Cytat(dr_bonzo)
file() wlasnie nie pozbywa sie znakow \n. A ze wygladal jak spacja... no coz.
No i to by się zgadzało gdyby była tu użyta funkcja file(), ale są tylko fgets() no i niby funkcje ten powinny pobierać całą linię minus 1 bajt (np. \n) ale coś się nie udało...
dr_bonzo
Moj blad -- nie ma tam uzytej funkcji file() -- po prostu nie przyjrzalem sie dokladnie kodowi ($file).
Cytat
string fgets ( resource handle [, int length])
Returns a string of up to length - 1 bytes read from the file pointed to by handle. Reading ends when length - 1 bytes have been read, on a newline (which is included in the return value)

fgets() tez zwraca \n.
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.