(PHP PDO)有什么区别?

时间:2014-11-13 15:15:02

标签: php pdo

我不明白以下两个代码块之间的区别。第一个块比第二个块长,我必须确定$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);

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

1 个答案:

答案 0 :(得分:0)

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

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