Cześć. Od wielu godzin szukam rozwiązania problemu na 10.1.45-MariaDB-0+deb9u1 – Debian 9.12. Nie działa mi poprawnie następujący fragment kodu:
$opis_p = "%".$opis."%"; $stmt1 = $mysqli->prepare(" SELECT email, lokalizacja, data_znaleziska, opis FROM znalezione WHERE (data_znaleziska >= ?) AND (opis LIKE ?) ORDER BY data_znaleziska "); // $stmt1->bind_param('ss', $data_zguby, $opis_p); $result1 = $stmt1->execute(); $stmt1->bind_result($email, $lokalizacja, $data_znaleziska, $opis); $stmt1->store_result(); $stmt1->fetch();
Chodzi o maskę LIKE %slowo%. Pole OPIS ma takie np. wartość: Sowa kropka ZWIEJKA (oczywiście to jednej z rekordów). Jeśli szukam po słowie “sowa” wszystko jest OK – rekord się pojawia na liście wyników. Jeśli po “kropka” lub “zwiejka” (bez względu na wielkość liter), to rekord NIE JEST znajdowany (!!!!!). Najśmieszniejsze jest to, że gdy szuka po fragmencie słowa, czyli “krop”, to też jest OK. Nie mam pojęcia o co chodzi. Nie chciałbym uruchamiać strony BazaRzeczyZnalezionych.pl z taką “wadą”, ale jak nie będzie wyjścia… Dlatego HELLP PLEASE!!!


Spróbuj zrobić pełne zapytanie w prepare.
prepare($query, array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
Zbuduj pełne query i wykonaj bez bind. Będziesz mógł zobaczyć, co idzie do bazy i wykonać to w jakimś tool po podłączeniu się do bazy. Może gdzieś wkrada się spacja?

Dzięki za podpowiedź. Jak na razie nie używam PDO i może to nie bardzo dużo dodatkowej robot, ale poprzestanę na tym co napiszę pod komentarzem Marcina. Dzięki!
Dziękuję za racjonalną podpowiedź. Niestety, upgreadowałem bazę do 10.4.16-MariaDB i nic się nie zmieniło. Jest jeszcze wersja 10.5 ale raczej poprzestanę na właściwej inforamcji w “instrukcji” do obsługi bazy zamiast stawiać wszytko od nowa z nikłą nadzieją że błąd został naprawiony.
Dzięki raz jeszcze.
PS.
A może zgłosić ten błąd do MariaDB Fundation?

Jeśli potwierdzisz, że to wina MariaDB, to jasne. Musiałbyś zainstalować ten sam skrypt i podpiąć inną bazę. Wtedy, jeśli zadziała, będziesz miał klarowny obraz sytuacji. Problem może też leżeć po stronie biblioteki PDO i ich wsparcia dla MariaDB. Trzeba popróbować.
Opisywane działania można zobaczyć na stronie: https://non-profit.eu/!nav5.php . Jest ona under construction, więc proszę bez krytyki 😉