$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
的信息。
答案 0 :(得分:0)
对于SQL语句,bindValue()
和bindParam()
之间没有区别。唯一的区别是PHP如何(或更确切地说,何时)读取输入变量。因此,您可以将两者一起使用,尽管稍后可能会引起难以发现的问题(关于SQL操作的结果)。
因此,除非您需要bindValue()
的特殊行为,否则最好避免混乱并坚持使用bindParam()
。