Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z zapisem długiego tekstu do bazy
Forum PHP.pl > Forum > Przedszkole
Star
Witam
chce dodac do bazy wpis zawierający ok 100 000 znaków, ustawiłem typ w tabeli jako TEXT, i jako MEDIUMTEXT i jako LONGTEXT i niestety nie zapisuje mi wyniku. gdy dam do zapisu inny,przykładowy tekst, na przykład "Ala ma kota" to zapisze bez problemu. Jest jakiś sposób aby to obejść ?
Xelah
TEXT jest za mały. Co najmniej MEDIUMTEXT. Poczytaj ile dany typ może zapisać.
A jak wygląda zapytanie w logach mysql? Jest tam to, co powinno być? Co mówi zmienna max_allowed_packet? Nie masz ustwionej jakiejś strasznie małej wartości?
Star
W pierwszym poście napisałem ze pierw ustawiłem text, potem mediumtext, a na końcu longtext i ciągle nic. Zapytanie to zwykle INSERT INTO tabela,jeśli to o to chodzi. Tekst dodaje przez textarea
prz3kus
Spróbuj zrobić zapytanie z poziomu np. phpmyadmina i zobacz jaki komunikat dostaniesz
Star
Dzieki za odpowiedz Prz3kus,odpisuje dopiero teraz ,bo miałem troche mało czasu w tygodniu.
Zrobiłem zapytanie przez PHPMyAdmin i dodało bez problemu cały tekst, po chwili go usunałem i sprobowałem dodać przez stronę i dalej nic.

Kod od wysyłania tekstu do bazy jest odpowiedni,poniewaz jak dodaje mniejszy tekst to wrzuca go bez problem
b4rt3kk
Cytat(Star @ 23.05.2015, 12:21:39 ) *
Dzieki za odpowiedz Prz3kus,odpisuje dopiero teraz ,bo miałem troche mało czasu w tygodniu.
Zrobiłem zapytanie przez PHPMyAdmin i dodało bez problemu cały tekst, po chwili go usunałem i sprobowałem dodać przez stronę i dalej nic.

Kod od wysyłania tekstu do bazy jest odpowiedni,poniewaz jak dodaje mniejszy tekst to wrzuca go bez problem


Próbowałeś wyświetlić treść zapytania przed zapisem? Przychodzi mi do głowy jeszcze post_max_size. Sprawdź ile u Ciebie wynosi ta wartość.

  1. echo ini_get('post_max_size');

robertpiaty
Mi jeszcze jedna rzecz przychodzi do głowy. Nie podajesz komunikatu błędu ani sposób w jaki to robisz więc może chodzi o jakieś dziwne znaki w treści np.
Cytat
' lub "
PHPMyAdmin sobie z tym radzi, a jak próbujesz to wrzucić za pomocą własnego kodu to się wywala.
Star
B4rt3kk ,wyswietliło 64M

Robert, nie wyskakuje zaden błąd, pojawia się informacja,że wykonano zapis
kod od zapisu wyglada tak:

  1. $query = "INSERT INTO tabela5 ".
  2. "(nick, tekst) ".
  3. "VALUES ('$_POST[nick]', '$_POST[tekst]')";
  4. mysql_query($query);
  5. header("Location: page_5.php?zapisano=tak");
robertpiaty
Spróbuj zamiast '$_POST[tekst]' wpisać
Cytat
'Ala powiedziała 'mam kota' i poszła'
a potem wpisz
Cytat
'Ala powiedziała "mam kota" i poszła'
Nie wiem czy to na tym błąd polega, ale Twój insert jest narażony na tego typu błędy. Przerób to na mysqli http://php.net/manual/en/mysqli-stmt.bind-param.php
b4rt3kk
Cytat(Star @ 23.05.2015, 15:36:02 ) *
B4rt3kk ,wyswietliło 64M

Robert, nie wyskakuje zaden błąd, pojawia się informacja,że wykonano zapis
kod od zapisu wyglada tak:

  1. $query = "INSERT INTO tabela5 ".
  2. "(nick, tekst) ".
  3. "VALUES ('$_POST[nick]', '$_POST[tekst]')";
  4. mysql_query($query);
  5. header("Location: page_5.php?zapisano=tak");


Zrób sobie echo $query (może już na tym etapie zauważysz co jest nie tak), skopiuj a następnie wklej w phpmyadminie jako zapytanie i odpal. Wtedy zobaczysz o co może chodzić. Poza tym, zrezygnuj chwilowo z tego przekierowania, bo nawet błędu nie zobaczysz.

  1. $query = "INSERT INTO tabela5 ".
  2. "(nick, tekst) ".
  3. "VALUES ('$_POST[nick]', '$_POST[tekst]')";
  4. mysql_query($query);
  5. //header("Location: page_5.php?zapisano=tak");

Star

@Bartekk
pokazało cos takiego
  1. string(228) "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'level'; document.sorting.submit();"> <' at line 1"
b4rt3kk
Cytat(Star @ 23.05.2015, 16:35:39 ) *
@Bartekk
pokazało cos takiego
  1. string(228) "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'level'; document.sorting.submit();"> <' at line 1"


Zmień swoje zapytanie w ten sposób:

  1. $query = "INSERT INTO tabela5 ".
  2. "(nick, tekst) ".
  3. "VALUES ('$_POST[nick]', '".mysql_real_escape_string($_POST[tekst])."')";
Star
Pomogło ,dzieki serdeczne 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.