请求时出现了一个奇怪的问题:
$result = $this->conn->query("SELECT student_id as id, avg(mark) as average FROM marks GROUP BY student_id ORDER BY avg(mark) DESC LIMIT 15;")->fetchArray(SQLITE3_ASSOC);
在$result
I getArray ( [id] => 1 [average] => 3.1739130434783 )
中,尽管在直接查询时
(通过 sqlite3.exe 实用程序)
我得到了完整列表:
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> SELECT student_id as id, avg(mark) as average FROM marks GROUP BY student_id ORDER BY avg(mark) DESC LIMIT 15;
1|3.17391304347826
2|3.0
7|1.0
6|1.0
5|1.0
4|1.0
3|1.0
sqlite>
我不知道有什么问题。
更新
似乎找到了一个解决方案,但我绝对不喜欢它。
while($row=$result->fetchArray()){
// Do Something with $row
print_r($row);
}
有单线方式吗?
一般来说,这个问题是文档中5秒内有答案的问题之一,但根据Stack Overflow的规则,它仍然需要回答。
从文档中可以看出,在 php_sqlite 中没有现成的获取字符串数组的方法
也就是说,我们有两种方式
首先是使用 PDO 代替 php_sqlite。有这样的方法。
第二个是记住我们是程序员,而不是从现成的立方体拼凑一个网站,自己写这样一个函数
然后有选择地使用它来“排成一行”,但同时不要像内裤上的松紧带那样拉伸代码