Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Problem z zapisem danych do bazy MySQL

#1
Problem z zapisem danych do bazy MySQL
Mam problem z zapisem do bazy, gdy w ciągu znaków, który zapisuje do komórki o typie lonttext znajduje się ' rekord jest pomijany i nie zapisuje się w bazie. Czy ktoś może mi powiedzieć dlaczego tak się dzieje oraz jak temu zaradzić? (Nie chciałbym jednak sprawdzać każdego ciągu i usuwać z niego ' )
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: Problem z zapisem danych do bazy MySQL
Wytłumacz proszę ostatnie zdanie, bo wydaje się ono kluczem do Twojego problemu.
 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: Problem z zapisem danych do bazy MySQL
Mamy ciąg znaków "A'la " chciałbym go w całości zapisać do bazy wraz z "'". Nie chciałbym usuwać wspomnianego apostrofa i zapisać "Ala" tylko cały pierwotny ciąg znaków.
 System operacyjny: windows_seven Przeglądarka: chrome
#4
RE: Problem z zapisem danych do bazy MySQL
Jasne, ale jeżeli tworzysz SQLa ręcznie (poprzez sklejenie znaków) to wychodzi Ci niepoprawny składniowo tekst. Na przykład:

Kod:
INSERT INTO tabela(pole) VALUES ('A'la');

Prawidłowo powinno to wyglądać tak:

Kod:
INSERT INTO tabela(pole) VALUES ('A''la');

W bazie zapisane będzie: A'la
Powinieneś zatem zwielokrotnić wszystkie ' na ''. Oczywiście lepszym rozwiązaniem jest korzystanie z parametrów, ale ich użycie zależy od konkretnej bazy i języka jakiego używasz.
 System operacyjny: windows_seven Przeglądarka: firefox
#5
RE: Problem z zapisem danych do bazy MySQL
1) Używam PHP i MySQL
2) Ciag znaków jest pobierany z komórki excel. 

Więc jeśli dobrze rozumiem, muszę przeszukać taki ciąg znaków pod kątem ' i przed nim dodać jeszcze jeden '. Wtedy zapisze się prawidłowo? 

koneton działa już, dziękuję za pomoc. Korzystając jednak z wątku pozwolę sobie na jeszcze jedno pytanie. Czy baza danych MySQL przychowuje polskie znaki z defaultu ( po instalacji apt-get install mysql-server) czy wymagana jest dodatkowa konfiguracja?
 System operacyjny: windows_seven Przeglądarka: chrome
#6
RE: Problem z zapisem danych do bazy MySQL
Zazwyczaj baza danych bierze kodowanie z systemu. W przypadku instalacji na Linuksie, domyślnie w systemie masz UTF. Podejrzewam, że domyślnie utworzona baza danych również go używa. Jeżeli masz phpMyAdmin lub coś podobnego, to w nim to widać. I tak, powinna prawidłowo przechowywać polskie znaki.

Jeżeli używasz PHP, to jeżeli nie chcesz mieć problemów z wyświetlaniem znaków, to używaj dokładnie takiego samego kodowania (ważne, jeżeli do pisania używasz Windows z domyślnym kodowaniem CP1250).
 System operacyjny: windows_seven Przeglądarka: firefox
#7
RE: Problem z zapisem danych do bazy MySQL
Przyznam szczerze niestety, że nie bardzo rozumiem kodowania.

Problem wygląda następująco używam funkcji do połączenia z bazą:

Kod PHP:
function db_connect (){
 
   // łączymy się z bazą danych 
 
   mysql_query("set names 'cp1250'");
 
   mysql_query ('SET CHARACTER_SET cp1250_general_ci');
 
  global $connection;
 
 $connection = @mysql_connect('serwer''login''haslo'
 
   or die('Brak połączenia z serwerem MySQL'); 
 
   $db = @mysql_select_db('pbaza'$connection
 
   or die('Nie mogę połączyć się z bazą danych'); 
 
  


Następnie pobieram dane z arkusza excel i dodaje je do bazy:
Kod PHP:
require_once 'Excel/reader.php';
 
   $xls = new Spreadsheet_Excel_Reader();
 
   $xls->setOutputEncoding('cp1250');
 
   //$data->setOutputEncoding('UTF-8');
 
   $xls->read('reklamacje-13.xls');

 
   
    for 
($i 2$i <= $xls->sheets[0]['numRows']; $i++) { //Tutaj ustawiłem lmit dla 10 000 rekordów
 
       for ($j 1$j <= $xls->sheets[0]['numCols']; $j++) {
 
           if ($j == || $j == 7) {
 
               $tymczas $xls->sheets[0]['cells'][$i][$j];
 
               $tablica explode("/" $tymczas);
 
               $tablica_testowa[$j] = $tablica[2] . '-' $tablica[1] . '-' $tablica[0];
 
           } else $tablica_testowa[$j] = strtr($xls->sheets[0]['cells'][$i][$j], "'""''" );
 
           //$komorka[$i][$j] = $xls->sheets[0]['cells'][$i][$j];
 
       }
 
       echo '<pre>';
 
         //  print_r($tablica_testowa);
 
       echo '<pre>';
 
       db_connect();
 
       mysql_query("set names 'cp1250'");
 
       mysql_query ('SET CHARACTER_SET cp1250_general_ci');
 
       $ins = @mysql_query("INSERT INTO excel_reklamacje SET numer ='$tablica_testowa[1]' , nazwa='$tablica_testowa[2]', nazwaspr='$tablica_testowa[3]', datawpl    ='$tablica_testowa[4]', status    ='$tablica_testowa[5]', decyzja    ='$tablica_testowa[6]', datadec    ='$tablica_testowa[7]', kwota    ='$tablica_testowa[8]', tresc    ='$tablica_testowa[9]', przyczyna    ='$tablica_testowa[10]'");
 
     
Używam kodowanie cp1250, bo takie kodowanie uzyskuje przy pobieraniu danych z excel, próbowałem zmieniać na utf-8 ale nie działało prawidłowo. 
Co ciekawe, gdy zapisuje dane do tabeli na współdzielonym hostingu to wszystko pięknie działa (pomimo iż metoda porównywania napisów się nie zgadza). Jeśli ten sam skrypt podepnę do bazy, którą zainstalowałem na moim serwerze VPS nie ma polskich znaków. Przy różnych kombinacjach, (metody porównywania napisów oraz kodowania w mysql_query) udało mi się uzyskać częściowo polskie znaki jednak z wyjątkami np
"Zamknięta" - pięknie
"należno¶ci" - tu już mniej


Nie mam już pomysłu co może jeszcze być nie tak. Czy jesteś w stanie dać mi jakąś wskazówkę? Jeżeli trzeba więcej informacji to napisz od razu wkleję. 
 System operacyjny: windows_seven Przeglądarka: chrome
#8
RE: Problem z zapisem danych do bazy MySQL
A jak wyświetlasz dane z tej tabeli? Skąd wiesz, że jest źle?
 System operacyjny: windows_seven Przeglądarka: firefox
#9
RE: Problem z zapisem danych do bazy MySQL
De facto nie wyświetlam ich tylko oglądam w phpmyadmin. I już tam są z krzaczkami.

Po wyświetleniu w przeglądarce też krzaczki.
Co ciekawe... jeżeli exportuje dane z bazy, z której jest ok (serwer współdzielony) i importuje z tym samym kodowaniem do tej, z którą jest problem to też działa ok. Więc przy zapisie jest coś nie tak?
 System operacyjny: windows_seven Przeglądarka: chrome
#10
RE: Problem z zapisem danych do bazy MySQL
Tak, musisz sprawdzić jakie masz kodowanie w bazie i zrobić konwersję. Prawdopodobnie na serwerze współdzielonym masz inne. Oczywiście, jest jeszcze opcja, by zmienić ustawienie kodowania dla tej bazy.
 System operacyjny: windows_seven Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki (Problem z zapisem danych do bazy MySQL)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Upload pliku na serwer i do bazy danych mati514 3 4460 16.05.2019, 17:12
Ostatni post: mati514
  Zbyt duży zrzut bazy MySQL z!pper 6 8724 04.06.2018, 19:18
Ostatni post: z!pper
Ściana Jak zrobić forum [HTML PHP MYSQL] toslaw1 13 15315 04.02.2017, 15:38
Ostatni post: toslaw1

Skocz do:


Wybrane wątki (Problem z zapisem danych do bazy MySQL)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  PHP - przycisk wykonujący równanie SalyWan 1 1159 03.10.2019 16:11
Ostatni post: Szachista
  Skopiowanie strony forum przez program HTTrack Website Copier ANDREAN 9 4306 06.09.2019 21:51
Ostatni post: ANDREAN
Question Co sądzicie o edytorze Gutenberg w WordPress? radekhetero 1 2990 31.07.2019 18:12
Ostatni post: Michu_PL
  Poszukuję skryptu ogłoszeń / Joomla. dongtuuyen 2 3797 25.07.2019 09:56
Ostatni post: Spidi
  Powstał nowy CMS na bazie WordPress radekhetero 0 2531 23.07.2019 20:53
Ostatni post: radekhetero
  Upload pliku na serwer i do bazy danych mati514 3 4460 16.05.2019 17:12
Ostatni post: mati514
Big Grin [PHP] Rotator linków, który nie wyświetli danego linka. semozo 1 5485 13.04.2019 10:29
Ostatni post: wlisik
  Wywołanie diva funkcją SebastianF 3 5957 25.03.2019 10:55
Ostatni post: hydr4x
Scared front-end czy back-end gbr 7 10958 23.03.2019 16:56
Ostatni post: luciussulla
  Gdzie odpłatnie wypozycjonować swoją stronę w html5 w google za 100zł? aktywny27 13 22185 17.02.2019 21:44
Ostatni post: SEMPIRE
  xampp konwersja video milutki182 3 11651 10.02.2019 13:18
Ostatni post: Ajgor
  HTML a Wordpress Majki_77 3 10679 10.02.2019 13:17
Ostatni post: Ajgor
  Gotowe klasy xCart 0 5635 08.02.2019 17:16
Ostatni post: xCart
  Jak ustawić tekst na środku ekranu buzek1 4 2958 08.02.2019 17:07
Ostatni post: xCart
Ściana Problem a zaktualizacją Joomla 3.6.5 do 3.8.8 CREATIVE_ 14 22010 13.01.2019 06:00
Ostatni post: CREATIVE_