【问题标题】:Why cant get expected result from database in CodeIgniter?为什么无法从 CodeIgniter 中的数据库中获得预期结果?
【发布时间】:2018-11-07 05:00:53
【问题描述】:

我的模型如下所示

            $values = array_count_values($books);

            arsort($values);

            $newArray = array_keys($values);

            $views_books_array = array_slice($newArray, 0, 5);

            $result = $this->db->where_in('book_id',$views_books_array)->get('books');

            return $result->result_array();

新数组如下所示

数组([0] => 37 [1] => 28 [2] => 31 [3] => 30 [4] => 38)

但是当我获取检索数据时,它会随机获取数据,而不是我给出的数据

我将 book_id 传递给模型和控制器 我的控制器如下所示,

$data['result'] = $this->Book_Model->get_viewed_books($book_id);

如果我 print_r 结果会是这样的

数组([0] => 28 [1] => 30 [2] => 31 [3] => 37 [4] => 38)

这样,但我想要根据 newArray 的数据我做错了什么

请帮我解决这个问题,不胜感激

【问题讨论】:

  • 你为什么用数组排序而不是使用sqls order by子句?
  • 我从采石场中获取浏览次数最多的书籍,并根据尝试从数据库中检索的内容将其存储在数组中
  • 例如我在索引 0 中浏览次数最多的书,书 id 37,但是当我从 sql 检索时,我得到书 id 28,因为书名以“A”开头
  • so order by id...绝对不需要对同一张表执行两次查询。例如,如果您想获得观看次数最多的书籍,ORDER BY id ASC, views ASC。无论哪种方式,如果您有 sql 问题,您应该发布架构和相关表架构

标签: php sql arrays codeigniter


【解决方案1】:

以下是直接取自手册并根据您的情况改编的示例:

<?php
$numbers = array(4, 6, 2, 22, 11); 
sort($numbers);

$arrlength = count($numbers);
for($x = 0; $x < $arrlength; $x++) {
  echo $numbers[$x];
  echo "<br>";
}

?>

你也可以用你的查询来定义这个例子如下:

$this->db->order_by('column_name', 'ASC');

【讨论】:

    【解决方案2】:

    我真的不明白你想做什么,但如果你想要有序的结果,你可以使用这个方法:

    $this->db->order_by('column', 'order');
    

    第二个参数可以是:'ASC'或'DESC'。 检查代码点火器manual

    【讨论】:

      猜你喜欢
      • 2022-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-24
      • 2015-04-12
      相关资源
      最近更新 更多