mysql获取assoc数组空错误

时间:2017-02-16 12:18:35

标签: php mysql pdo insert fetch

我想将获取的数组输出到前端。它工作正常,直到数组返回为空。它抛出一个PHP错误,该错误在php line X ' 未定义变量$ 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 ();
    }
}

1 个答案:

答案 0 :(得分:1)

您正在以错误的方式运行查询。

将变量添加到PDO查询中的唯一正确方法是通过参数添加变量。理解简单地在变量周围添加引号非常重要,并且最终会导致无数问题,从语法错误到SQL注入。另一方面,由于预处理语句的本质,它是一种防弹解决方案,无法通过数据变量引入任何问题。

    $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);
}

请注意,您永远不应该收到错误报告