如何从 MYSQL 中获取随机行以及如何将其写入活动记录?

How to get random row from MYSQL and how to write it in active records?

这是我的查询

"SELECT * FROM package_info ORDER BY RAND() LIMIT 0,3;"

我试着这样写在活动记录中

$this->db->select('*');
$this->db->from('package_info');
$this->db->order_by("id", "random");
$this->db->limit(0, 3);
$result = $this->db->get();

但这是行不通的。如何在活动记录中写入?

CodeIgniter 不要求您为大多数查询生成器语句提供 2 个参数,您可以通过执行 ->where('1=1') 来完成整个 WHERE 并且它非常好。

我很惊讶有多少人不理解方法链,但我会在我的例子中展示它更好...

$result = $this->db->select('*')
    ->from('package_info')
    ->order_by('rand()')
    ->limit(0, 3)
    >get();

如上所述,如果您在原始查询中没有 2 个参数,则不必添加两个。

你可以用这些基本查询做的另一件事是完全省略 from('package_info') 并将 table 名称粘贴在 ->get('package_info')

如果您不喜欢查询生成器,则也不需要使用它。我不喜欢某些东西(你不能将 UNION 与它们一起使用)。在这种情况下,只需使用

$result = $this->db->query("SELECT * FROM package_info ORDER BY RAND() LIMIT 0,3;");

使用下面的代码可以正常工作 -

$this->db->select('*');
$this->db->from('package_info');
$this->db->order_by("id", "random");
$this->db->limit(3, 0);
$result = $this->db->get()->result(); 

// shows last executed query
echo $this->db->last_query();

// shows data fetched
echo "<pre>";
print_r( $result );
echo "</pre>";

您可以访问此 link 以查看如何在 Codeigniter 中使用查询。 https://www.codeigniter.com/userguide2/database/active_record.html