$nome = 'nome';
$stmt = $db->prepare("SELECT `nome`, `mov`, `gen` FROM table WHERE gen LIKE :gen AND nome = :nome");
$stmt->bindValue(':gen', '%'.$gen.'%', PDO::PARAM_STR); 
$stmt->bindParam(':nome', $nome, PDO::PARAM_STR);     
$stmt->execute();

Jak widać, używam bindValue do powiązania wartości z operatorem LIKE, ponieważ bindParam nie pozwalają na użycie łańcuchów.

Testowałem tutaj i nie widziałem żadnych błędów, a także nie znalazłem niczego w google na temat używania zarówno bindValue, jak i bindParam na jednym przygotowanym oświadczeniu.

-1
mario 19 listopad 2018, 05:03

1 odpowiedź

Najlepsza odpowiedź

W przypadku instrukcji SQL nie ma różnicy między bindValue() a bindParam(). Jedyna różnica polega na tym, jak – a raczej kiedy – PHP odczytuje zmienne wejściowe. Możesz więc używać obu razem, chociaż może to później spowodować trudne do znalezienia problemy (dotyczące wyniku operacji SQL).

Dlatego najlepiej jest unikać nieporozumień i trzymać się bindValue(), chyba że potrzebujesz specjalnego zachowania bindParam().

0
Dormilich 20 listopad 2018, 18:44