Php 我可以一直使用bindParam吗?

Php 我可以一直使用bindParam吗?,php,pdo,Php,Pdo,我看到很多人在他们的SQL方法中使用“execute(array[…]”,我一直都是这么用的) execute->bindParam(“[…]”,$string); 我仍然可以使用bindParam吗?如果否,我应该在什么时候使用它?谢谢是的,您应该这样做,它可以帮助您在添加富文本数据时处理不需要的引号问题,并帮助您防止SQL注入攻击还可以作为第三个参数指定数据类型。这就是使用bindParam()的优点过度执行数组 $sql->bindParam(':key', 23, PDO::PAR

我看到很多人在他们的SQL方法中使用“execute(array[…]”,我一直都是这么用的)

execute->bindParam(“[…]”,$string);


我仍然可以使用bindParam吗?如果否,我应该在什么时候使用它?谢谢

是的,您应该这样做,它可以帮助您在添加富文本数据时处理不需要的引号问题,并帮助您防止SQL注入攻击

还可以作为第三个参数指定数据类型。这就是使用
bindParam()的优点
过度执行数组

$sql->bindParam(':key', 23, PDO::PARAM_INT);//telling pdo that's it is integer type. 
在执行数组时,不能指定类型

$sql->execute([':key' => 23]);

我只会使用BindParam从查询中获取数据,或者如果我实际使用了绑定,例如更新绑定变量,然后重新调用execute,这是prepared语句的要点

如果您有很多(N)个参数,并且它们只是一次性的不变输入,那么简单地使用execute数组,而不是调用N+1函数调用,可以说是更有效的(可以说,我的意思是,与您的查询速度相比,这可能是一个微优化)

从简单性的角度来看,如果您不使用该机制,为什么还要麻烦地绑定(并冒着引用带来的复杂性的风险)

bind和execute数组都将提供相同的安全保护,据我所知,它们没有任何额外的好处

绑定可能更具可读性-即,与执行数组的隐式顺序相比,更容易查看绑定到什么的内容,尤其是当您绑定到
未命名标签时


我用我觉得“虚假”的东西来审查代码绑定,我通常会拒绝它,并要求它们重构为一个简单的execute+数组,但我通常不会这么做。我认为这表明这几乎是一个品味问题。

如果您喜欢,为什么您会接受错误的答案?您能提供一个参考,说明execute数组数据的保护不如绑定的好吗变量?@sciplot别这样,他根本不理解这个问题。遗憾的是,这个错误的答案不能删除,但至少应该被否决