Могу ли я использовать как bindValue, так и bindParam для одного подготовленного оператора? - PullRequest
0 голосов
/ 19 ноября 2018
$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();

Как видите, я использую bindValue для привязки значения к оператору LIKE, потому что bindParam не позволяет использовать строки.

Я проверял здесь, и я не увидел ни одной ошибки, и я также не нашел ничего в Google об использовании bindValue и bindParam в одном подготовленном утверждении.

1 Ответ

0 голосов
/ 20 ноября 2018

Для оператора SQL нет разницы между bindValue() и bindParam(). Единственная разница в том, как - или, скорее, когда - PHP читает входные переменные. Таким образом, вы можете использовать и то и другое вместе, хотя это может вызвать проблемы, которые трудно найти (относительно результата операции SQL) позже.

Так что лучше избегать путаницы и придерживаться bindValue(), если вам не нужно особое поведение bindParam().

...