Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapisaniem adresu WWW w bazie
Forum PHP.pl > Forum > Bazy danych > MySQL
chlebik
Witam!


Ostatnimi czasy kiedy testowalem swoja aplikacje okazalo sie, ze pojawil sie dosc ciekawy blad. Otoz przy probie zapisania do bazy adresu internetowego zawierajacego adres internetowy np: http://jakis.adres.org/zaloguj.php?f=66&am...16a5780e597f8f9 adres zapisuje sie do znaku "&" w adresie. Uzywam funkcji mysql_real_escape_string na lancuchach zanim zapisze je w bazie, ale to nic nie daje. Innej mozliwosci nie znam - ktos ma moze jakis pomysl bym mogl zapisywac calosc?


Pozdrawiam i z gory dziekuje
Chlebik
nevt
pokaż kod: jak pobierasz adres, jak zapisujesz do bazy - wtedy może coś poradzimy...
tomeksobczak
przed wstawieniem do bazy zrob url_encode w PHP
chlebik
Zrobilem - do bazy dolacza sie to w formie

Kod
http%3A%2F%2Fjakis.adres.net%2Fzaloguj.php%3Ff%3D66



Typ danych w kolumnie MySQL to TEXT zatem miejsca by zapisac jest od cholery i ciut ciut. Generalnie raczej linki nie beda do tej bazy wkladane, ale ewentualnosc taka zawsze istnieje i ciekawi mnie co takiego sie dzieje, ze nie chce sie zapisac caly.
PawelC
Bez kodu będzie ciężko Ci pomóc, tak więc wklej tutaj kod to szybciej się dowiesz gdzie on jest. Mi adresy stron zapisuje normalnie, bezproblemu poprzez zwykłe dodanie z formularza, do bazy gdzie jest pole link z parametrem text.
chlebik
Wklejam do bazy najzwyczajniej w swiecie. Aplikacja dziala - wszystko inne (odczyt, zapis czego innego, instrukcje UPDATE) dzialaja bez zarzutu. Wklejam tak:


Kod
$data = getdate();
$data_biezaca = $data['year'] . "-" . $data['mon'] . "-" . $data['mday'];

$tekst = urlencode($tekst);
            
            
            
$zapytanie = "INSERT INTO tabela VALUES('', '$data_biezaca', '', '$nadawca', '$adresat', 'tok', '$tekst', '');";  
$wynik = mysql_query($zapytanie, $link);



Polaczenie z baza jest nawiazane i wszystko z nim OK skoro cos do tej bazy sie zapisuje, a po drodze nie dostaje komunikatu o bledzie. W zmiennej $TEKST jest wlasnie zapisana tresc wiadomosci i jesli wystapi tam adres WWW w formacie, ktory napisalem w pierwszym poscie to zapisuje sie tylko jego fragment.
PawelC
To
Kod
$zapytanie = "INSERT INTO tabela VALUES('', '$data_biezaca', '', '$nadawca', '$adresat', 'tok', '$tekst', '');";  
$wynik = mysql_query($zapytanie, $link);

Powinno być raczej tak
Kod
$zapytanie = "INSERT INTO tabela VALUES('', '$data_biezaca', '$nadawca', '$adresat', 'tok', '$tekst')";  
$wynik = mysql_query($zapytanie, $link);

A tam ma być tok czy może $tok??

A kolumne gdzie zapisujesz link masz jako text czy varchar albo char?
chlebik
"Tok" to lancuch, ktory mowi na jakim etapie jest obecnie wpisywany wiersz (tok, OK, cancelled, itp.), zas ostatni zapis '' (przy wkladaniu jest pusty) jest dodawany przy wpisaniu przez usera metody zalatwienia danego zagadnienia (i wtedy tok zamienia sie na OK). Dlatego tez przy wpisywaniu nowej pozycji (a to jest w tym przypadku) kolumna ta pozostaje pusta, ale pozniej jest ona modyfikowana. Dla jasnosci - dopisywanie metody rozwiazania i zmienianie 'tok' na 'ok' odbywa sie bez problemu.
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.