Обратите внимание, что мой основной ответ внизу ( ЕСЛИ вы не можете редактировать эту функцию ), но я добавил альтернативные ответы, так как из OP не ясно, какесли функция может / должна быть отредактирована.
Редактировать эту функцию
Ваша объявленная функция имеет:
public function __getalldata($tablename,...,$limit = 200 ...){ ... }
Где ссылка, указанная в различных ответов здесь похоже, что он корректирует это значение по умолчанию - самое простое решение - НЕ редактировать по умолчанию , а установить особый случай и явно проверить, если $limit
точно (и только) null
.
Чтобы уточнить: PHP будет использовать явно установленное NULL
значение над любым значением по умолчанию (в этом случае,200
).
Итак;
// within the function
if($limit !== null) {
//use limit in your PDO
}
Этот не не преобразует, если $limit == 0
или другие случаи жонглирования типов, общие для PHP
Это выше означает, что если нет * 1045Значение * $limit
задается, тогда используется значение по умолчанию 200
.Если задано явное значение NULL
, оно будет использоваться вместо него.
Код
Обратите внимание, этот код предназначен длятолько в качестве примера и, вероятно, может быть упрощено далее, чтобы лучше следовать шаблонам DRY, но я не знаю достаточно о CodeIgniter, чтобы сделать это здесь и сейчас.
public function __getalldata($tablename,$tablefield=array(),$orderbyfield = 'id',$ascdesc = 'desc',$limit = 200,$type='result')
{
//Query generation according to above parameters
if($limit !== null){
$data = $this->db
->select($tablefield)
->from($tablename)
->order_by($orderbyfield, $ascdesc)
->limit($limit)
->get();
}
else {
$data = $this->db
->select($tablefield)
->from($tablename)
->order_by($orderbyfield, $ascdesc)
->get();
}
return $data->$type();
}
Если выне могу редактировать функцию
Мне неясно, можете ли вы (или хотите) редактировать саму функцию, если вы используете Codeigniter, поэтому вместо этого просто обратитесь к автоматическим значениям аргументов функции для возвратакаждая строка допустимости, независимо от того, что (фактически удаляет регистр для лимита.
. Для этого используйте PHP-константу PHP_INT_SIZE
или PHP_INT_MAX
, которая будет возвращать именно это значение. Чтение этого вопроса / ответа говорит вам больше об этом, но эти константы должны быть самоочевидными, как максимальные значения int.
Если MySQL LIMIT
превышает возвращаемые строки, это не имеетэффект, поэтому, установив это максимальное значениее, он всегда будет превышать возвращаемые строки и / или строки, используемые в результате вывода страницы.
Поэтому:
$var = __getalldata("table",[0=>'columnname'],'id','desc',PHP_INT_MAX,'result');
вернет вам каждую строку в пределах целочисленного предела PHP [2 147 483 647] или [9 223 372 036 854 775 807], в зависимости от вашей системы (32-разрядная или 64-разрядная).
И давайте посмотрим правде в глаза - если 2 миллиарда недостаточно, вам нужно столкнуться с серьезными проблемами с вашим запросом SQL ;-)