Давайте представим, что у нас есть таблица, в которой мы удалили несколько строк. Возможно, ID не продолжается правильно. Для идентификатора образца: 1,5,24,28,29,30,31,32,33 (9 строк)
mysql_num_rows возвращает 9
Другие методы будут возвращать несуществующие строки:
$ Кол = 9; // потому что mysql_num_rows () == 9
$ Кол = Rand (1, $ счета); // возвращает 4 для выборки, но мы не гребли с id = 4
Но с моим методом вы всегда получаете существующие строки. Вы можете разделить код и использовать первые 2 кода в любом месте на сайте.
// 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