首页 > 后端开发 > php教程 > MySQLi 中的'bind_result”与'get_result”:您应该选择哪种预准备语句方法?

MySQLi 中的'bind_result”与'get_result”:您应该选择哪种预准备语句方法?

Mary-Kate Olsen
发布: 2024-12-04 16:30:17
原创
921 人浏览过

`bind_result` vs. `get_result` in MySQLi: Which Prepared Statement Method Should You Choose?

MySQL 准备语句中的bind_result 与 get_result

MySQLi 中的准备语句提供两种主要的方法来检索查询结果:bind_result 和 get_result。本文比较了每种方法的用途、优点和限制。

bind_result

bind_result 方法将变量显式绑定到查询返回的列。它要求变量的顺序严格匹配列结构,通常在查询返回特定列子集时使用。

优点:

  • 兼容对于较旧的 PHP 版本
  • 为每个版本返回单独的变量列

缺点:

  • 手动绑定每个变量
  • 需要额外的代码才能将行作为数组返回
  • 如果表结构改变则需要更新代码changes

get_result

get_result 方法返回一个包含查询的整个结果集的对象。它需要 MySQL 本机驱动程序 (mysqlnd) 并提供更大的灵活性。

优点:

  • 返回带有返回行数据的关联/枚举数组或对象
  • 允许使用一次获取所有返回的行fetch_all()

缺点:

  • 需要 MySQL 本机驱动程序

示例:bind_result

<?php
$query1 = 'SELECT id, first_name, last_name, username FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query1);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {
    echo 'ID: ' . $id . '<br>';
    echo 'First Name: ' . $first_name . '<br>';
    echo 'Last Name: ' . $last_name . '<br>';
    echo 'Username: ' . $username . '<br><br>';
}
?>
登录后复制

示例: get_result

<?php
$query2 = 'SELECT * FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query2);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo 'ID: ' . $row['id'] . '<br>';
    echo 'First Name: ' . $row['first_name'] . '<br>';
    echo 'Last Name: ' . $row['last_name'] . '<br>';
    echo 'Username: ' . $row['username'] . '<br><br>';
}
?>
登录后复制

结论

bind_result 和 get_result 的选择取决于应用程序的具体要求。 bind_result 提供与旧 PHP 版本的兼容性,并允许精确的变量绑定,而 get_result 提供灵活性并消除手动变量绑定的需要。然而,get_result 需要 MySQL Native Driver。

以上是MySQLi 中的'bind_result”与'get_result”:您应该选择哪种预准备语句方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板