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
  Wygenerowanie zakresu liczb w bazie danych MySQL shaker 1 1636 24.11.2020, 00:30
Ostatni post: wlisik
  PHP - Sprawdzenie wartości przed dodaniem do bazy MYSQL dawswi1 0 6367 20.02.2020, 22:21
Ostatni post: dawswi1
  Upload pliku na serwer i do bazy danych mati514 3 10744 16.05.2019, 17:12
Ostatni post: mati514

Skocz do:


Wybrane wątki (Problem z zapisem danych do bazy MySQL)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
Sad Dodawanie komentarzy na WWW Samek2222 9 7961 01.04.2020 19:17
Ostatni post: koneton
  Zbyt szybki spadek pojemności serwera gentleman 5 7151 05.03.2020 15:28
Ostatni post: Pentium4320
  Darmowe artykuły do przedruku? Alsenas 3 8554 03.03.2020 15:38
Ostatni post: takecare
  Wyszukiwanie na urządzenich mobilnych broda99 5 5607 28.02.2020 23:24
Ostatni post: Ajgor
  Problem z zdjęciami w wordpressie sledzik 3 6883 28.02.2020 10:46
Ostatni post: cerojoh616
  PHP - Sprawdzenie wartości przed dodaniem do bazy MYSQL dawswi1 0 6367 20.02.2020 22:21
Ostatni post: dawswi1
  Jak pobrać filmy na dysk zamieszczone na tej stronie? adolek17 4 6940 06.02.2020 14:36
Ostatni post: panaho
  "Na czym" postawiona jest ta strona? OxyGenE 4 6850 04.02.2020 21:35
Ostatni post: kompowiep
  Błędy składniowe PHP dawswi1 1 6655 26.01.2020 18:22
Ostatni post: hydr4x
  Przekazywanie stanu sesji między plikami php dawswi1 2 6555 26.01.2020 16:35
Ostatni post: dawswi1
  Mixed content na protokole HTTPS Unlimited 1 7865 20.11.2019 14:05
Ostatni post: raxer
  Pozycjonowanie, toksyczne linki Alsenas 13 15616 19.11.2019 14:48
Ostatni post: Centor
Question Co sądzicie o edytorze Gutenberg w WordPress? radekhetero 2 10158 15.11.2019 15:55
Ostatni post: Alsenas
  Konfiguracja wampserver 2019. ~Anonim 3 8229 11.10.2019 05:26
Ostatni post: Michu_PL
  wyswietlanie pliku w php roxses 0 8071 07.10.2019 14:43
Ostatni post: roxses