Php mysql获取关联数组空错误
我想将获取的数组输出到前端。它可以正常工作,直到数组返回为空。它抛出一个PHP错误,该错误为“未定义变量$data on PHP line X”。我一直在寻找解决方案,尽管它们并不完全符合我的想法。请帮忙Php mysql获取关联数组空错误,php,mysql,pdo,insert,fetch,Php,Mysql,Pdo,Insert,Fetch,我想将获取的数组输出到前端。它可以正常工作,直到数组返回为空。它抛出一个PHP错误,该错误为“未定义变量$data on PHP line X”。我一直在寻找解决方案,尽管它们并不完全符合我的想法。请帮忙 public function search($search) { try { $query = $this->connection->prepare ( "SELECT * FROM files WHERE number=$search ORDER BY
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注入。另一方面,由于预处理语句的本质,它是一种防弹的解决方案,不可能通过数据变量引入任何问题
$this->connection->prepare ( "SELECT * FROM files WHERE number=? ORDER BY id" );
$query->execute ([$search]);
为了消除错误,您应该使用。所以完整的代码是
public function search($search) {
$this->connection->prepare ( "SELECT * FROM files WHERE number=? ORDER BY id" );
$query->execute ([$search]);
return $query->fetchAll(PDO::FETCH_ASSOC);
}
请注意,您永远不应该捕捉错误来报告它谢谢您的及时回复。事实上,我会纠正这一点。但是,当未找到搜索项时,它仍在运行相同的错误。我该如何处理这个错误?我很感激。非常感谢。现在开始更正我的代码。您会发现
$data[]=$row
应该是$data[]=$row
为什么要准备一个包含串联变量且没有参数的查询?您的脚本有可能会使用