BbindValue dla kilku wartosci o co chodzi

0

Czesc mam problem z bindValue przy kilku wartosciach. Dla jednej jest wszystko okej, albo jak recznie wpisze liczby ktore chce dynamicznie zastapic wiec zapytanie sqlowe jest dobre.
A oto kod

 
$sql = "SELECT n from users n where n REGEXP :regexp LIMIT :limit OFFSET :offset";
			$stmt = $conn->prepare($sql);

			$stmt->bindValue(':regexp',$tags);

			$stmt->bindValue(':offset',$offset);	

			$stmt->bindValue(':limit',$limit);	
			$stmt->execute();

A komunikat dostaje taki

Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 5' OFFSET '1 at line 17

0

spróbuj

$stmt->bindValue(':offset',$offset, PDO::PARAM_INT);    
$stmt->bindValue(':limit',$limit, PDO::PARAM_INT); 
0

Ciagle to samo, tez tak wczesniej probowalem. Dziwne jest to, ze z palucha wartosci dzialaja.

0

to może zadziała

$stmt->bindValue(':offset', (int)$offset, PDO::PARAM_INT);
$stmt->bindValue(':limit', (int)$limit, PDO::PARAM_INT); 
0

Dziala! Moglbys wytlumaczyc dlaczego tak sie dzieje?

0

zmienne $limit i $offset są traktowane domyślnie jako zmienne tekstowe i wynikiem jest nieprawidłowy sql "LIMIT '10' OFFSET '20'", po przecastowaniu zmiennych na typ liczbowy int produkowany jest prawidłowy sql "LIMIT 10 OFFSET 20"

0

Ehh... i to jest wlasnie punkt dla jezyka C# albo Javy :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1