Kod
foreach($binds as $n => $bind){
if(is_int($bind)) $type=PDO::PARAM_INT; else $type=PDO::PARAM_STR;
$statement->bindParam(($n+1), $bind, $type);
}
if(is_int($bind)) $type=PDO::PARAM_INT; else $type=PDO::PARAM_STR;
$statement->bindParam(($n+1), $bind, $type);
}
I mam problem z jednym zapytaniem:
Kod
$action=$pdo->sql('SELECT * FROM actions WHERE meczId=? AND time<? AND nr>?',array((int)$_GET['meczId'],(strtotime(date('Y-m-d H:i:s'))-strtotime($mecz['date'])),(int)$_GET['nr']));
Na początku myślałem, że traktuje te zmienne z $_GET jako string'i i nie może ich porównać, czy są mniejsze/większe. Ale nawet po przekonwertowaniu ich na int'y (dodanie (int) przed nimi) nie zadziałało. A np. takie zapytanie:
Kod
print_r($pdo->sql('SELECT * FROM players WHERE id>? AND blok<?',array(1,10)));
Wyświetla mi poprawną tablicę. Wiecie może co tu spaprałem?
Zadziałało, jak dałem zamiast bindParam - bindValue. Jaka jest różnica między tymi funkcjami?
Po usunięciu tego ustawiania rodzaju zmiennej też działa (nawet po usunięciu (int) ). Jest to ustawianie zatem potrzebne/wymagane?