我可以一直使用bindParam吗?

时间:2017-11-18 04:03:16

标签: php pdo

我看到很多人在他们的SQL方法中使用“execute(array [...]”,我总是使用

execute->bindParam('[...]', $string);

我还可以使用bindParam吗?如果不是,我什么时候应该使用它?感谢

3 个答案:

答案 0 :(得分:0)

另外,作为第三个参数,您可以指定数据类型。这是使用bindParam()而不是执行数组的优势。

$sql->bindParam(':key', 23, PDO::PARAM_INT);//telling pdo that's it is integer type. 

使用执行数组时,不能指定类型

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

答案 1 :(得分:0)

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

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

从简单的角度来看,如果不使用这种机制,为什么要解决绑定的所有问题(并且由于引用而冒复杂性)?

绑定和执行数组都将提供相同的安全保护,我知道没有额外的好处。

绑定可能更具可读性 - 即,它更容易看到与执行数组的隐式顺序绑定的内容,特别是如果绑定到?而不是命名标签。

我会根据自己的感受来审核代码"虚假"绑定和我通常感觉拒绝它并要求他们重构一个简单的执行+数组,但那时我通常不会打扰。我认为这表明它很接近于品味。

答案 2 :(得分:-1)

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