PDO和MySQLi准备好的语句有什么区别?

时间:2017-03-14 05:11:44

标签: php mysqli pdo

这两个prepared声明之间有什么区别?

1

$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');

$stmt->execute(array('name' => $name));

foreach ($stmt as $row) {
    // do something with $row
}

2

$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
}

我检查了很多关于准备好的陈述的课程,但我唯一理解的是第二种方式,因为它可以用程序编写,是不是和PDO一样?既然他们都是准备好的陈述?它们之间有任何速度差异或易用性吗?我学到了第二种方式,因为我认为PreparedStatment = PDO但当我知道它不是PDO时,我很震惊,使用

mysqli_prepare
mysqli_stmt_bind_param
mysqli_stmt_execute
mysqli_stmt_bind_result

1 个答案:

答案 0 :(得分:4)

区别如下: -

  1. Mysqli仅适用于MySQL数据库。 PDO支持使用相同功能的其他数据库。
  2. Mysqli可以用于面向对象的样式或过程样式。 PDO始终是面向对象的。
  3. Mysqli支持使用“?”准备好的语句参数的占位符。 PDO支持“?”占位符和命名占位符,例如“:columnName”。
  4. Mysqli要求您使用函数将每个参数值绑定到预准备语句。 PDO还允许您在执行预准备语句时简单地传递参数值数组。