Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]select pdo dziwne zachowanie?
Forum PHP.pl > Forum > Przedszkole
Swirek
  1. $stmt = $pdo -> prepare('SELECT `id` FROM `users` WHERE `points`>:points');
  2. $stmt -> bindValue(':points', '250.1', PDO::PARAM_STR);
  3. $stmt -> execute();

wybieram rekord z taki sposób
w bazie rekord wygląda następująco
  1. id|points
  2. 1|250.1


dlaczego podana formuła zwraca mi ten rekord? przecież wartość points w bazie jest taka sama jak w zapytaniu... czyli jest równa a nie większa.
dziś już długo myślę i może coś przeoczyłem.
Parametry sprawdzone wartości się zgadzają, próbowałem już z param_str, param_int i dalej otrzymuje 1 rekord mimo równości.
jeżeli przekażę w parametrze 250.11 to już rekord nie jest zwracany.
z góry dzięki za jakiekolwiek sugestie
KsaR
  1. $stmt = $pdo->prepare('SELECT `id` FROM `users` WHERE `points`>TRUNCATE(?, 1)');
  2. $stmt->execute(array('250.1'));

A tak?

Ewentualnie mozesz tak sprobowac ale nie gwarantuje dzialania:
  1. $stmt = $pdo->prepare('SELECT `id` FROM `users` WHERE `points`>?');
  2. $stmt->execute(array(
  3. number_format('250.1',1,'.','')
  4. ));

--
Czy kolumna w bazie (points) jest typu decimal? Czy jakiego?
Swirek
dzięki bardzo było typu float co powodowało minimalne ale jednak zaokrąglenia.
człowiek się całe życie uczy...
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.