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!
Faktycznie, brzmi to nieprawdopodobnie. Być może jest to jakiś błąd w tych konkretnych wersjach oprogramowania, które wymieniasz.
To, co zrobiłbym najpierw, to zainstalował próbnie na innym środowisku (OS/baza danych/PHP) i spróbował, czy to zadziała. Wtedy próbowałbym uaktualniać oprogramowanie na Twoim serwerze. MariaDB 10.1 to dość stara wersja. Kurs PHP działa na 10.4.
Osobiście nigdy nie spotkałem się akurat z takim błędem.
Powodzenia w inwestygacji.
Opisywane działania można zobaczyć na stronie: https://non-profit.eu/!nav5.php . Jest ona under construction, więc proszę bez krytyki 😉