其中哪一种是执行Select查询和使用Prepared语句获取结果的最佳方式



我在执行选择查询的这些方法中感到困惑,谁能帮助区分这些方法并解释其中哪个更好吗?

1的方法

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
}

2方法

$stmt = $dbConnection->query('SELECT * FROM employees');
while($row = $stmt->fetch_assoc()) {
    // do something with $row
}

第三方法

$stmt = $dbConnection->prepare("SELECT District FROM City WHERE Name=?")) {
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($district);
$stmt->fetch();
printf("%s is in district %sn", $city, $district);

三者的作用各不相同

  • 第一个用于从预处理语句中获取多个结果。请注意,此行为不能保证。
  • 第二个用于获得多个结果,而不需要预处理语句
  • 第三个用于从准备好的语句
  • 中获取单个结果

从所有这些可以看出,执行Select查询和使用Prepared语句获取结果的最佳方法是使用PDO:

从一个准备好的语句中获取多个结果

$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->execute([$name]);
while ($row = $stmt->fetch()) {
    // do something with $row
}

在没有预处理语句的情况下获得多个结果

$stmt = $dbConnection->query('SELECT * FROM employees');
while($row = $stmt->fetch()) {
    // do something with $row
}

从预处理语句中获取单个结果

$stmt = $dbConnection->prepare("SELECT District FROM City WHERE Name=?"));
$stmt->execute([$city]);
$district = $stmt->fetchColumn();
你看,所有的方法都是统一的,不那么冗长,保证工作。我有一个非常好的PDO教程,我强烈推荐。

最新更新