📌  相关文章
📜  mysqli_fetch_array() 期望参数 1 为 mysqli_result - TypeScript (1)

📅  最后修改于: 2023-12-03 15:03:07.910000             🧑  作者: Mango

mysqli_fetch_array() 期望参数 1 为 mysqli_result - TypeScript

介绍

mysqli_fetch_array() 是 PHP 中用于从 MySQL 数据库结果集中获取一行作为关联数组或数字数组的函数。在 TypeScript 中使用时,需要传入一个 mysqli_result 参数,表示从 MySQL 数据库查询所得的结果集。

然而,在使用过程中,有可能会出现以下错误提示:

Argument of type 'string | number | boolean | null' is not assignable to parameter of type 'mysqli_result'.

这是因为在 TypeScript 中,函数参数类型是很重要的,需要和声明保持一致。在这种情况下,参数类型被错误地赋为了一个简单数据类型,导致了这个错误。

解决方法

解决这个错误的方法是,根据所使用的 MySQL 数据库连接库(如 mysql2)提供的接口,正确地声明参数类型。以下是一个使用 mysql2 的例子:

import { Connection, ResultSetHeader, RowDataPacket } from "mysql2/promise";

// 创建连接
const connection: Connection = await createConnection({
    host: "localhost",
    user: "root",
    database: "test_db",
    password: "root"
});

// 执行查询
const [rows, fields] = await connection.execute("SELECT * FROM `users`");

// 读取结果集
while (const row: RowDataPacket | undefined = rows.shift()) {
    const data = row && row["columnName"];
    // 处理数据
}

在以上代码中,我们引入了 mysql2 库提供的 ConnectionResultSetHeader 类型,用于创建和操作 MySQL 数据库连接和查询结果集。通过正确地声明类型,就可以避免 mysqli_fetch_array() 期望参数 1 为 mysqli_result 的错误了。

结论

在 TypeScript 中使用 mysqli_fetch_array() 函数时,需要根据所使用的 MySQL 数据库连接库提供的接口,正确地声明参数类型。通过避免类型错误,可以使代码更加健壮和可靠。