这两个
prepared
陈述有什么区别?
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
$stmt->execute(array('name' => $name));
foreach ($stmt as $row) {
// do something with $row
}
$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
差异如下:-
Mysqli
仅适用于MySQL数据库。 PDO
支持其他数据库使用相同的功能。Mysqli
可以用于面向对象风格或过程风格。 PDO
始终是面向对象的。Mysqli
支持带有 ?
参数占位符的准备好的语句。 PDO
支持 ?
占位符和命名占位符,例如 :columnName
。Mysqli
要求您使用函数将每个参数值绑定到准备好的语句。 PDO
还允许您在执行准备好的语句时简单地传递参数值数组。PDO(PHP 数据对象)和 MySQLi(MySQL 改进版)都是 PHP 扩展,提供与数据库交互的方法,包括使用准备好的语句安全高效地执行 SQL 查询的能力。但是,它们在实现和功能方面存在一些差异:
1。数据库支持:
2。 API风格:
3.准备陈述:
4.绑定参数:
:
或?
占位符来绑定参数,使代码更具可读性。例如::username
。?
。5 错误处理:
6.获取数据:
fetch()
方法来获取数据,以各种格式返回结果(关联数组、对象等)。fetch_assoc()
、fetch_object()
、fetch_row()
等。7.命名交易:
8.一个查询中的多个语句: