2013-03-24 107 views
1

我一直在催促使用bindValue和execute(array())thing-y之间的区别。bindValue和execute(array())有什么区别?

好让说,我有代码

$query = $db->prepare("SELECT embedded_page.uid FROM embedded_page WHERE fbp_id = :fbp_id"); 
$query->bindValue(":fbp_id", $fbp_id, PDO::PARAM_INT); 
$query->execute(); 

是什么这之间的区别这个例子吗?

$query = $db->prepare('SELECT `embedded_page`.`uid`, `embedded_page`.`ticket_id`, `embedded_page`.`event_table` FROM `embedded_page` WHERE `fbp_id` = ?'); 
$query->execute(array($fbp_id)); 

无论保存一行代码。

帮助将不胜感激。

+1

我不认为除了你不能在数组中的'PDOStatement :: bindValue()'中使用可选的第三参数之外没有任何区别,据我所知。 – Mike 2013-03-24 03:41:44

+0

他们也使用不同的占位符类型为不同的绑定方法,而他们是可以互换的。 – 2013-03-24 05:38:09

回答

0

它已经自己解释你的例子,bindValue以特别定义的PDO :: PARAM_INT或类似的形式验证输入数据类型。而在第二个例子中,没有像准备使用?那样的条件。 (一些内部验证可以通过引擎假设为字符串,整型和浮点型来完成)。此外,如果查询优先形式中的占位符更容易理解,则更多变量。

+0

需要从一堆*重复*代码中理解什么? – 2013-03-24 05:24:35

+0

如果你有发布变量和数据库字段名称不同的情况,那么使用第一个考虑它真的很好。使用'$ query-> bindValue(“:fbp_id”,$ some_val,PDO :: PARAM_INT); $ query-> bindValue(“:anp_id”,$ other_val,PDO :: PARAM_INT);'更容易理解字段和表单值),然后'$ query-> execute(array($ some_val,$ other_val));' – 2013-03-24 05:29:01

+0

对于长参数列表如果表单变量名称不同于db字段名称。 – 2013-03-24 05:33:00