【问题标题】:(PHP PDO) What is the difference? [duplicate](PHP PDO)有什么区别? [复制]
【发布时间】:2014-11-13 15:15:02
【问题描述】:

我不明白以下两个代码块之间的区别。第一个块比第二个块长,我必须确定$id => PDO::PARAM_INT, $name => PDO::PARAM_STR 的类型。二是简洁。请帮助我了解它们之间的区别。非常感谢。

$stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name");
$stmt->bindValue(':id', $id, PDO::PARAM_INT);
$stmt->bindValue(':name', $name, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

$stmt = $db->prepare("SELECT * FROM table WHERE id=:id AND name=:name");
$stmt->execute(array(':name' => $name, ':id' => $id));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

请告诉我应该使用什么?我知道上面的两个代码块具有相同的结果。但是我应该使用哪种方式?

【问题讨论】:

  • 阅读 PDO 的文档怎么样?
  • 有什么区别?其中两个具有相同的结果。第二个比第一个更容易编码。还是你无法回答?

标签: php pdo


【解决方案1】:

两者之间的差异很大程度上取决于偏好。将参数放在execute() 调用中是一种更短的方法,与通过bindValue 明确绑定参数相同。 bindParam 的行为略有不同。请注意,通过execute() 提交的所有变量都被视为字符串,无论如何。

更长的方法的优点是你可以强制数据类型 - 这被认为是好的做法 - 它还允许更容易的 NULL 插入。您可以使用 bindParam 在执行之前使用变量,因为它的值仅在 execute() 调用的确切时刻提交。

【讨论】:

    猜你喜欢
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 2010-10-10
    • 2019-02-09
    • 1970-01-01
    • 2015-11-23
    相关资源
    最近更新 更多