【问题标题】:What is the difference between bindValue and having execute(array())?bindValue 和有 execute(array()) 有什么区别?
【发布时间】:2013-03-13 18:13:48
【问题描述】:

我一直在敦促知道使用 bindValue 和 execute(array()) thing-y 有什么区别。

假设我有这个代码示例

$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));

不管保存一行代码。

我们将不胜感激。

【问题讨论】:

  • 据我所知,除了您不能在数组中使用PDOStatement::bindValue() 中的可选第三个参数外,我认为没有任何区别。
  • 它们还使用不同的占位符类型来表示不同的绑定方法,同时它们可以互换。

标签: php pdo bindvalue


【解决方案1】:

已经用您的示例进行了自我解释,即 bindValue 以特别定义的 PDO::PARAM_INT 或类似形式验证输入数据类型。而在第二个示例中,没有使用 ? 进行准备这样的条件。 (假设字符串、整数和浮点类型,引擎可能会完成一些内部验证。)。此外,如果有更多变量作为查询第一种形式的占位符,则更容易理解。

【讨论】:

  • 从一堆重复的代码中需要明白什么?
  • 如果您有发布变量和数据库字段名称 ae 不同的情况,那么使用第一个考虑它是非常好的情况。使用$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 ));
  • 对于很长的参数列表如果表单变量名称与数据库字段名称不同,则以第一种形式映射总是容易得多。
猜你喜欢
  • 2015-06-08
  • 1970-01-01
  • 2019-05-09
  • 1970-01-01
相关资源
最近更新 更多