results queries fetch_assoc examples error array after php mysql codeigniter random

php - fetch_assoc - queries codeigniter



Registro aleatorio de la base de datos mysql con CodeIgniter (11)

¿Sabes cuántos registros hay en la tabla? Podrías hacer algo como esto:

$count=mysql_exec(''select count(*)-1 from some_table''); $count=rand(1,$count);

entonces:

select * from some_Table limit $count,1

Investigué en Internet, pero no pude encontrar nada ...

Tengo un mysql db y registros en una tabla, y necesito obtener un registro aleatorio de esta tabla en cada carga de página. ¿Cómo puedo hacer eso? ¿Hay algún func para eso?

¡Apreciar! Gracias

CLASIFICADO: enlace: http://www.derekallard.com/blog/post/ordering-database-results-by-random-in-codeigniter/

$this->db->select(''name''); $query = $this->db->get(''table''); $shuffled_query = $query->result_array(); shuffle ($shuffled_query); foreach ($shuffled_query as $row) { echo $row[''name''] . ''<br />''; }


Codeigniter ofrece la posibilidad de ordenar sus resultados por ''RANDOM'' cuando ejecuta una consulta. Por ejemplo

function get_random_page() { $this->db->order_by(''id'', ''RANDOM''); or $this->db->order_by(''rand()''); $this->db->limit(1); $query = $this->db->get(''pages''); return $query->result_array(); }

Lo he usado antes y he encontrado que funciona bien. Espero que ayude


Creo que esta no es la mejor manera. Para la muestra, has eliminado el registro que now==$count es now==$count . Debe mysql_num_rows() esto para mysql_num_rows()


Esta función recupera todas las filas en la tabla en orden aleatorio

public function get_questions(){ $this->db->select(''*''); $this->db->order_by(''rand()''); $this->db->from(''multiple_choices''); $query = $this->db->get(); return $query->result_array(); }


Este fragmento de código funcionó bien para mí.

$this->db->select(''name''); $this->db->order_by(''rand()''); $this->db->limit(1); $query = $this->db->get(''<table>''); //<table> is the db table name return $query->result_array();


No sé sobre codeigniter, pero obtener un conjunto de datos aleatorios es

SELECT * FROM table ORDER BY RAND() LIMIT 1

La parte relevante es " ORDER BY RAND() ", obviamente.


Obtener un registro aleatorio de una mesa grande es muy caro. No use ORDER BY RAND() .

Esta es una mala idea, pero si tienes una mesa pequeña no hay problema. En una gran base de datos, este tipo de consultas es muy lento.


Obtener un registro aleatorio de una mesa grande es muy caro. Pero debajo de este código es muy efectivo.

$count=mysql_num_rows(mysql_query("select * from table_name WHERE SOME_OF_YOUR_CONDITION")); $nums=rand(1,$count); mysql_query(" select * from table_name WHERE SOME_OF_YOUR_CONDITION LIMIT $count,1");

Esto será útil ...


Permite pensar que tenemos una tabla donde borramos algunas filas. Tal vez la ID no continúe correctamente. Para ID de muestra: 1,5,24,28,29,30,31,32,33 (9 filas)

mysql_num_rows devuelve 9

Otro método devolverá filas no existentes: $ count = 9; // porque mysql_num_rows () == 9 $ count = rand (1, $ count); // devuelve 4 para la muestra, pero no hemos remar con id = 4

Pero con mi método siempre obtienes filas existentes. Puede separar el código y usar los primeros 2 códigos en cualquier lugar del sitio.

// Inside of Controller Class function _getReal($id,$name_of_table) { $Q=$this->db->where(''id'',$id)->get($name_of_table); if($Q->num_rows()>0){return $Q;}else{return FALSE;} } function _getLastRecord($name_of_table) { $Q=$this->db->select("id")->order_by(''id DESC'')->limit("1")->get($name_of_table)->row_array(); return $Q[''id'']; } function getrandom() { $name_of_table="news"; $id=rand(1,$this->_getLastRecord($name_of_table)); if($this->_getReal($id,$name_of_table)!==FALSE) { echo $id; // Here goes your code } else { $this->getrandom(); } // END


Yo uso codeigniter con datamapper. Este es el código que utilizo para obtener un registro aleatorio del Advertiser tabla:

$ad = new Advertiser(); $ad->limit(3); $ad->order_by(''id'', ''RANDOM''); $ad->get();


SELECT product_id, title, description FROM products WHERE active = 1 AND stock > 0 ORDER BY RAND() LIMIT 4

¡La cláusula ORDER BY RAND () devuelve registros aleatorios! Puede limitar los registros también usando LIMIT.