【发布时间】:2019-12-08 09:00:46
【问题描述】:
我正在使用 PDO 从数据库中提取一些数据,并且数据返回一个额外的数组,我无法理解它来自哪里。
我可以选择使用call_user_func_array 来“退出”一个数组,我尝试这样做,但这会减慢我的工作速度。
我只是希望我的代码按预期工作,而不是开始弄乱它并使其“脏”。除此之外,我找不到解决方案。
这是我用来提取数据的select 方法:
public function select($whattoselect, $fromwhere, $condition){
$stmt = $this->pdo->prepare("SELECT {$whattoselect} FROM {$fromwhere} {$condition}");
$stmt->execute();
$this->row = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $this;
}
这就是我打印结果的方式(仅用于故障排除):
echo '<pre>';
print_r($check->row());
echo '</pre>';
这就是我得到的输出:
array(
0 = array(
key1 => value1,
key2 => value2
)
)
这就是我想要得到的输出:
array(
key1 => value1,
key2 => value2
)
【问题讨论】:
-
看一下,fetchAll 从您的查询结果中返回一个包含所有行的数组,您的查询只有一个结果,所以结果如上所示。您必须使用
$results[0]来获取第一行(并且仅在您的情况下) -
@Jonnix 这太简单了,我什至没有想到它我真的很抱歉占用您的时间,尽管您的评论对我非常有用。谢谢。
-
如果您只想要一行,您也可以将
LIMIT 1添加到您的查询中 -
@AfikHabaz 没什么可道歉的。只是要小心你使用它的地方。您的函数
select看起来非常通用,因此始终简单地返回 1 行可能并不是您真正想要的。对您来说更好的选择可能是选择数组中的第一项,稍后当您需要该行时返回,但我不知道您的代码,所以不能确定。