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

Cal*_*ous 4 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
}
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

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

mysqli_prepare
mysqli_stmt_bind_param
mysqli_stmt_execute
mysqli_stmt_bind_result
Run Code Online (Sandbox Code Playgroud)

Ana*_*Die 8

区别如下:-

  1. Mysqli仅适用于 MySQL 数据库。PDO支持使用相同功能的其他数据库。

  2. Mysqli可以以面向对象的风格或过程的风格使用。PDO始终是面向对象的。

  3. Mysqli支持带有?参数占位符的准备好的语句。PDO支持?占位符和命名占位符,例如:columnName.

  4. 对于较旧的 PHP 版本,Mysqli仅允许显式绑定。如今,PDO和 都Mysqli允许在执行准备好的语句时简单地传递参数值数组。此外,从8.2开始,Mysqli一个方便的功能,可以一次性运行准备和执行