-1
$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不允许使用字符串。

我在这里进行了测试,我没有看到任何错误,而且我在谷歌上也没有发现任何关于同时使用这两种方法bindValuebindParam一个准备好的语句的信息。

4

1 回答 1

0

bindValue()对于 SQL 语句,和之间没有区别bindParam()。唯一的区别是 PHP 如何——或者更确切地说,何时——读取输入变量。因此,您可以同时使用两者,尽管这可能会导致以后难以发现的问题(关于 SQL 操作的结果)。

所以最好避免混淆并坚持使用,bindValue()除非你需要bindParam().

于 2018-11-20T15:35:45.867 回答