mysql 获取关联数组空错误
mysql fetch assoc array empty error
我想将获取的数组输出到前端。它工作正常,直到数组 returns 为空。它抛出一个 PHP 错误,即“在 php 行 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 ();
}
}
您 运行 您的查询方式有误。
将变量添加到 PDO 查询中的唯一正确方法是通过 参数 添加它。了解 简单地在变量周围添加引号是不够的 并且最终会导致无数问题,从语法错误到 SQL 注入,这一点非常重要。另一方面,由于准备语句的本质,它是一个 bullet-proof 解决方案,不可能通过数据变量引入任何问题。
$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);
}
请注意,您永远不应该捕获错误来报告它
我想将获取的数组输出到前端。它工作正常,直到数组 returns 为空。它抛出一个 PHP 错误,即“在 php 行 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 ();
}
}
您 运行 您的查询方式有误。
将变量添加到 PDO 查询中的唯一正确方法是通过 参数 添加它。了解 简单地在变量周围添加引号是不够的 并且最终会导致无数问题,从语法错误到 SQL 注入,这一点非常重要。另一方面,由于准备语句的本质,它是一个 bullet-proof 解决方案,不可能通过数据变量引入任何问题。
$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);
}
请注意,您永远不应该捕获错误来报告它