我可以在一个准备好的语句上同时使用bindValue和bindParam吗?

时间:2018-11-19 02:03:04

标签: pdo prepared-statement bindparam bindvalue

$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上找到任何有关在单个准备好的语句上同时使用bindValuebindParam的信息。

1 个答案:

答案 0 :(得分:0)

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

因此,除非您需要bindValue()的特殊行为,否则最好避免混乱并坚持使用bindParam()