Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]select pdo dziwne zachowanie?
Swirek
post
Post #1





Grupa: Zarejestrowani
Postów: 221
Pomógł: 20
Dołączył: 4.05.2006
Skąd: Polska

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


  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?

Ten post edytował KsaR 25.01.2016, 21:28:45
Go to the top of the page
+Quote Post
Swirek
post
Post #3





Grupa: Zarejestrowani
Postów: 221
Pomógł: 20
Dołączył: 4.05.2006
Skąd: Polska

Ostrzeżenie: (0%)
-----


dzięki bardzo było typu float co powodowało minimalne ale jednak zaokrąglenia.
człowiek się całe życie uczy...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 08:36