首页 >数据库 >mysql教程 >`mysqli` 准备语句:`bind_result()` 还是 `get_result()`?

`mysqli` 准备语句:`bind_result()` 还是 `get_result()`?

Patricia Arquette
Patricia Arquette原创
2024-12-25 09:22:13194浏览

`mysqli` Prepared Statements: `bind_result()` or `get_result()`?

Bind_result 与 Get_result:使用哪个?

简介

在 mysqli 中使用准备好的语句时,您有两种获取结果的选项:bind_result() 和 get_result()。了解这些方法之间的差异对于优化数据库操作至关重要。

Bind_result()

bind_result() 将特定变量绑定到查询结果中的列,允许您将它们直接分配给标量变量。当您需要查询中的特定列时,通常会使用它。

示例:

$query = 'SELECT id, first_name, last_name FROM table WHERE id = ?';
$id = 5;

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

优点:

  • 适用于过时的 PHP 版本。
  • 单独返回每列的变量。

缺点:

  • 需要您手动列出要绑定的所有变量。
  • 需要额外的代码以数组形式返回行。
  • 表结构时必须更新

Get_result()

get_result() 以关联数组或枚举数组的形式检索整个结果,并自动填充返回行中的数据。当您需要将整行作为数组处理时,它非常方便。

示例:

$query = 'SELECT * FROM table WHERE id = ?';
$id = 5;

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

优点:

  • 返回关联/枚举数组或对象自动。
  • 支持 fetch_all() 一次检索所有返回的行。

缺点:

  • 需要 MySQL 本机驱动程序 (mysqlnd)。

限制和区别

两种方法都有局限性:

  • bind_result() 需要显式列出列,容易出错且不灵活。
  • get_result() 不支持过时的 PHP 版本,需要 MySQL 本机驱动程序。

选择正确的方法

最佳方法取决于您的具体要求:

  • 如果您需要特定列的单独变量并使用较旧的 PHP 版本,请使用 bind_result()。
  • 如果您更喜欢将行作为数组使用,想要一次检索所有行,并且有 MySQL 本机驱动程序,请使用get_result().

以上是`mysqli` 准备语句:`bind_result()` 还是 `get_result()`?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn