0

Dies ist meine AbfrageWie bekomme ich eine zufällige Zeile von MYSQL und wie schreibe ich sie in aktive Datensätze?

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

Ich versuche es in aktiven Aufzeichnungen wie diese zu schreiben.

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

Aber es ist nicht funktionieren. Wie schreibe ich das im aktiven Datensatz?

+0

'$ this-> db-> order_by ('rand()');' Stattdessen als 'order_by ("id" ..)' nicht Ihre erste Abfrage – MackieeE

+0

Mögliche Duplikat [Random passen Aufzeichnung von MySQL-Datenbank mit CodeIgniter] (http://StackOverflow.com/Questions/1627934/random-record-from-mysql-Database-with-codeigniter) – MarcM

Antwort

0

Verwendung Im Folgenden Code verwendet, wird es funktionieren -

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

Sie auf diesem Link besuchen können, zu sehen, wie Abfragen in Codeigniter verwendet werden. https://www.codeigniter.com/userguide2/database/active_record.html

1

CodeIgniter schreibt nicht vor, dass Sie bieten 2 Argumente für die meisten Aussagen Query Builder können Sie eine ganze WHERE tun, indem ->where('1=1') und seine völlig in Ordnung zu tun.

Ich bin überrascht, wie viele Leute nicht verstehen Methode Verkettungs, aber ich werde es in meinem Beispiel zeigen, es ist nur schöner ...

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

Per oben, wenn Sie nicht tun Haben Sie 2 Parameter in Ihrer ursprünglichen Abfrage, fühlen Sie sich nicht gezwungen, zwei hinzuzufügen.

Eine andere Sache, die Sie mit einfachen Abfragen wie diese tun können, ist die from('package_info') ganz weglassen und den Tabellennamen in der ->get('package_info')

Stick Wenn Sie mit Query Builder gestört werden kann nicht Sie brauchen es auch nicht zu verwenden. Ich mache einige Dinge nicht (du kannst UNION nicht für sie verwenden). In diesem Fall nur

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

Sieht aus wie OP-Problem war die 'limit()', nicht die ' order_by'! Zweitens verwendet die akzeptierte Antwort CI2 Docs! :/Ach. – MackieeE

+0

Wenn jemand eine einfache Frage stellt, dann nehmen Sie an, dass es genau das ist, was sie wollen und haben es getestet ... oh mein Gott ... –

Verwandte Themen