2017-02-14 18 views
0

这是我的查询如何从MYSQL获取随机行以及如何将其写入活动记录?

"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(); 

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

+0

'$ this-> db-> order_by('rand()');'相反,因为您的'order_by(“id”..)“与您的第一个查询不匹配 – MackieeE

+0

[Random记录从MySQL数据库与CodeIgniter](http://stackoverflow.com/questions/1627934/random-record-from-mysql-database-with-codeigniter) – MarcM

回答

0

使用下面的代码也将正常工作 -

$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>"; 

您可以在此链接查看查看查询是如何在笨使用。 https://www.codeigniter.com/userguide2/database/active_record.html

1

CodeIgniter并未要求您为大多数查询生成器语句提供2个参数,您可以通过执行->where('1=1')并完全正确地完成WHERE操作。

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

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

按照上面,如果你不在原始查询中有2个参数,不要强迫加两个参数。

您就可以使用这些基本的查询做的另一件事,是省略了from('package_info')完全和在->get('package_info')

坚持表的名称。如果你不能与查询生成器,你不需要任何使用它被人打扰。我不喜欢一些东西(你不能在他们中使用UNION)。在这种情况下,只需使用

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

看起来OP的问题是'极限()',而不是' order_by'!其次,接受的答案使用CI2 Docs! :/唉。 – MackieeE

+0

当有人给出一个简单的查询时,你认为它正是他们想要的并且测试它......哦,亲爱的...... –

相关问题