php - mysql 获取关联数组为空错误

标签 php mysql pdo insert fetch

我想将获取的数组输出到前端。它工作正常,直到数组返回为空。它抛出一个 PHP 错误“在 php 第 X 行上 undefined variable $data”。我一直在寻找解决方案,尽管它们并不完全符合我的想法。请帮忙。

public function search($search) {
    try {
        $query = $this->connection->prepare ( "SELECT * FROM files WHERE number=$search ORDER BY id" );
        $query->execute ();
        while ( $row = $query->fetch ( PDO::FETCH_ASSOC ) ) {
            $data [] = $row;
        }
        return $data;
    } catch ( PDOException $e ) {
        $e->getMessage ();
    }
}

最佳答案

您运行查询的方式错误。

将变量添加到 PDO 查询中的唯一正确方法是通过参数添加它。理解这一点非常重要:仅仅在变量周围添加引号是不够的,并且最终会导致无数问题,从语法错误到 SQL 注入(inject)。另一方面,由于准备好的语句的本质,它是一种万无一失的解决方案,使得不可能通过数据变量引入任何问题。

    $this->connection->prepare ( "SELECT * FROM files WHERE number=? ORDER BY id" );
    $query->execute ([$search]);

要消除错误,您应该使用 appropriate fetch mode 。所以完整的代码是

public function search($search) {
    $this->connection->prepare ( "SELECT * FROM files WHERE number=? ORDER BY id" );
    $query->execute ([$search]);
    return $query->fetchAll(PDO::FETCH_ASSOC);
}

请注意,您永远不应该捕获错误来报告它

关于php - mysql 获取关联数组为空错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42273767/

相关文章:

javascript - 如何使用 Php 中的选择选项获取 GridView 中的数据

php - 新消息到来时如何提醒

mysql - jsp servlet Mysql数据库连接错误

mysql - 使用自定义查询显示多级下拉列表的最新数据?

PHP 和 MySQL 编码

php - 准备语句的 PDO 多参数绑定(bind)

php - 如何将选项值传递给按钮

php - 如何对使用 mysql 查询但使用 PHP usort 函数排序的项目进行分页?

php - PDO 数据未存储在数据库中

php - 如何使用一个连接实现 2 个或更多功能?