首页
学习
活动
专区
圈层
工具
发布

mysqli 返回什么

mysqli 是 PHP 中用于与 MySQL 数据库进行交互的扩展。它提供了一种面向对象的方式来执行 SQL 查询和处理结果集。mysqli 扩展返回的结果取决于执行的操作类型。

基础概念

  • mysqli_connect(): 用于建立到 MySQL 数据库的连接。
  • mysqli_query(): 执行 SQL 查询。
  • mysqli_fetch_assoc(): 从结果集中获取一行作为关联数组。
  • mysqli_fetch_array(): 从结果集中获取一行作为关联数组、数字数组或两者兼有。
  • mysqli_num_rows(): 获取结果集中的行数。

相关优势

  • 面向对象: mysqli 提供了面向对象的接口,使得代码更加清晰和易于管理。
  • 预处理语句: 支持预处理语句,可以有效防止 SQL 注入攻击。
  • 事务支持: 支持事务处理,确保数据的一致性和完整性。
  • 持久连接: 支持持久连接,减少了连接数据库的开销。

类型

  • 结果集对象: 当执行查询操作(如 SELECT)时,mysqli_query() 返回一个结果集对象。
  • 布尔值: 当执行非查询操作(如 INSERTUPDATEDELETE)时,mysqli_query() 返回 TRUEFALSE 表示操作是否成功。

应用场景

  • Web 开发: 在 Web 应用程序中,用于处理用户输入的数据并与数据库进行交互。
  • 数据分析: 用于从数据库中提取数据并进行处理和分析。
  • 内容管理系统: 用于管理网站内容的增删改查操作。

示例代码

代码语言:txt
复制
<?php
// 建立数据库连接
$conn = mysqli_connect("localhost", "username", "password", "database");

if (!$conn) {
    die("连接失败: " . mysqli_connect_error());
}

// 执行查询
$sql = "SELECT id, name FROM users";
$result = mysqli_query($conn, $sql);

if ($result) {
    // 获取结果集中的行数
    $num_rows = mysqli_num_rows($result);
    echo "结果集中的行数: " . $num_rows . "<br>";

    // 遍历结果集
    while ($row = mysqli_fetch_assoc($result)) {
        echo "ID: " . $row["id"] . " - Name: " . $row["name"] . "<br>";
    }

    // 释放结果集
    mysqli_free_result($result);
} else {
    echo "查询失败: " . mysqli_error($conn);
}

// 关闭数据库连接
mysqli_close($conn);
?>

参考链接

常见问题及解决方法

  1. 连接失败:
    • 确保数据库服务器正在运行。
    • 检查数据库连接参数(主机名、用户名、密码、数据库名)是否正确。
    • 确保 PHP 的 mysqli 扩展已启用。
  • 查询失败:
    • 检查 SQL 语句是否正确。
    • 确保数据库中有相应的数据表和数据。
    • 使用 mysqli_error() 函数获取详细的错误信息。
  • 结果集为空:
    • 确保 SQL 查询语句正确返回数据。
    • 检查数据库中是否有符合条件的数据。

通过以上信息,您可以更好地理解 mysqli 的返回值及其相关应用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP中的MySQLi扩展学习(一)MySQLi介绍

PHP中的MySQLi扩展学习(一)MySQLi介绍 关于 PDO 的学习我们告一段落,从这篇文章开始,我们继续学习另外一个 MySQL 扩展,也就是除了 PDO 之外的最核心的 MySQLi 扩展。...什么是 MySQLi MySQLi 扩展允许我们访问 MySQL4.1 及以上版本的数据库所提供的功能。...本身它们其实并没有什么太大的差别,不过现代化的大型框架中基本都会将 PDO 作为默认的数据库连接来进行封装,毕竟它的可移植性可以方便这些通用框架连接不同的数据库。...$mysqli = mysqli_connect("localhost", "root", "", "blog_test"); $res = mysqli_query($mysqli, "SELECT...$mysqli = new mysqli("localhost", "root", "", "blog_test"); $res = mysqli_query($mysqli, "SELECT * FROM

4K20
  • PHP中的MySQLi扩展学习(三)mysqli的基本操作

    记住,它返回的不是受影响的行数,这一点是需要注意的。我们如果需要获取受影响的行数需要使用 MySQLi 的属性 affected_rows 。...如果执行的是 SELECT 语句,那么 query() 返回的就是一个 mysqli_result 对象,它代表从一个数据库查询中获取的结果集。关于这个对象的内容我们将在后面的文章中进行详细的说明。...如果使用 query() 方法,返回的虽然是 PDOStatement 对象,但是它是无法遍历的。 接下来我们就看看 MySQLi 是如何来执行这个多条语句拼接在一起的 SQL 语句的。...通过它执行之后,返回的结果是一个布尔值,如果第一条语句就有问题的话,那么它返回的就是 FALSE 。如果是后面的语句错误了,我们需要调用 next_result() 才能获取后面语句的错误信息。...我们注意到 INSERT 、 UPDATE 语句返回的结果都是 FALSE 。而且 SELECT 语句中的 num_rows 也是 0 。

    4.3K20

    PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句

    所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 MySQLi 中这两大特性与 PDO 在使用上的区别。 事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。...而在 MySQLi 中,我们则需要指定 MySQLi_Driver 对象中的报错属性为抛出异常,很明显,MySQLi_Driver 就是 MySQLi 的驱动对象。...// 使用异常处理错误情况 $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT...try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name...12)"); // 不存在的表 // 提交事务 $mysqli->commit(); } catch (Exception $e) { // 回滚事务 $mysqli

    3.8K00

    PHP中的MySQLi扩展学习(六)MySQLI_result对象操作

    不少同学会发现,current_field 和 lengths 好像并没有什么实际的内容,其实这两个属性是需要在特定操作下才会显示内容的,比如 lengths 是要在 fetch() 结果集之后才会有信息的...,它可以指定返回的格式,默认情况下是 MYSQLI_NUM 这种数组下标的形式,和 PDO 类似,我们直接指定为 MySQLI_ASSOC 就可以返回键名形式的数据内容。...,同样它也可以指定返回结果集的格式,和 fetch_all() 是类似的,只不过它是只获取下一行而不是全部的数据集,而且它的参数默认是返回的 MYSQLI_BOTH ,也就是数字下标和键名下标同时返回结果...另外还有一个 fetch_assoc() 方法,直接就是返回 MYSQLI_ASSOC 格式的数据,这个方法不需要任何参数,它可以看成是 fetch_array(MYSQLI_ASSOC) 这种使用方式的一个封装...它其实就是默认指定为 MySQLI_NUM 的结构返回方式。

    4.4K10

    PHP中的MySQLi扩展学习(三)mysqli的基本操作

    记住,它返回的不是受影响的行数,这一点是需要注意的。我们如果需要获取受影响的行数需要使用 MySQLi 的属性 affected_rows 。...如果执行的是 SELECT 语句,那么 query() 返回的就是一个 mysqli_result 对象,它代表从一个数据库查询中获取的结果集。关于这个对象的内容我们将在后面的文章中进行详细的说明。...如果使用 query() 方法,返回的虽然是 PDOStatement 对象,但是它是无法遍历的。 接下来我们就看看 MySQLi 是如何来执行这个多条语句拼接在一起的 SQL 语句的。...通过它执行之后,返回的结果是一个布尔值,如果第一条语句就有问题的话,那么它返回的就是 FALSE 。如果是后面的语句错误了,我们需要调用 next_result() 才能获取后面语句的错误信息。...我们注意到 INSERT 、 UPDATE 语句返回的结果都是 FALSE 。而且 SELECT 语句中的 num_rows 也是 0 。

    4.2K00

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作 就像 PDO 中的 PDO_Statment 对象一样,MySQLI_STMT 对象也是一个预处理语句所形成的对象,专门用来操作 MySQLi...; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt->bind_param...同 PDO 一样,这个方法只返回成功失败的信息,也就是一个布尔值。...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...返回结果集 执行 fetch() 方法返回的是一个布尔值,它主要的作用是将结果集绑定到指定的变量中,所以如果你直接打印它的结果是不会有什么有用的信息的,我们必须通过绑定列变量的方式来获得数据。

    3.4K10

    PHP中的MySQLi扩展学习(五)MySQLI_STMT对象操作

    ; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt->bind_param...同 PDO 一样,这个方法只返回成功失败的信息,也就是一个布尔值。...; $id = 's'; $username='mysqli_username'; $password='mysqli_password'; $salt = 'mysqli_salt'; $stmt-...可以看出,MySQLI_STMT 的错误属性和信息基本和 MySQLi 对象的是一样的。 列绑定 除了请求查询语句参数的绑定之外,MySQLI_STMT 也是支持直接绑定列的。...返回结果集 执行 fetch() 方法返回的是一个布尔值,它主要的作用是将结果集绑定到指定的变量中,所以如果你直接打印它的结果是不会有什么有用的信息的,我们必须通过绑定列变量的方式来获得数据。

    3.9K00

    PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句

    PHP中的MySQLi扩展学习(四)mysqli的事务与预处理语句 对于 MySQLi 来说,事务和预处理语句当然是它之所以能够淘汰 MySQL(原始) 扩展的资本。...所以在这里,我们就不再多讲理论方面的东西了,直接上代码来看看 MySQLi 中这两大特性与 PDO 在使用上的区别。 事务处理 首先,我们还是要让 MySQLi 对于错误的语句也报出异常来。...而在 MySQLi 中,我们则需要指定 MySQLi_Driver 对象中的报错属性为抛出异常,很明显,MySQLi_Driver 就是 MySQLi 的驱动对象。...// 使用异常处理错误情况 $driver = new mysqli_driver(); $driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT...try { // 开始事务 $mysqli->begin_transaction(); $mysqli->query("insert into tran_innodb (name

    3.1K10

    PHP Mysqli 常用代码集合

    PHP5.0开始,不仅可以使用早期的mysql数据库扩展函数,还能使用新扩展的mysqli技术实现与mysql数据库的信息交流,PHP的mysqli扩展被封装在在一个类中,它是一种面向对象技术,只能在PHP5...和MYSQL4,1或更高的版本才能使用,(i)表示该进,使用mysqli,执行速度更快,更方便,更高效,也可以使数据库访问更安全(因为用类模式) 使用mysqli 简单流程 设置PHP.ini 配置文件...extension=php_mysqli.dll 创建连接: 微信图片_20191129170748.jpg 检测连接: 微信图片_20191129170806.jpg 获取数据库返回值: 微信图片...close(); (其他有用参数) $num = $stmt->affected_rows;      受影响的行数 $id  = $stmt->insert_id;          当是插入命令时,返回插入的行...模式运行,这就意味着所执行的每一个语句都将立即写入数据库中,但如果使用事务安全的表格类型,是不希望自动提交的行为的 事务处理 当执行多条MYSQL命令时,当然希望当其中一条命令出错时,所有的命令都不执行,返回执行命令之前的状态

    2.7K20
    领券