Хорошо. Поэтому я думаю, что вам просто нужно реализовать разбиение на страницы.
$perPage = 10;
$pageNo = Хорошо. Поэтому я думаю, что вам просто нужно реализовать разбиение на страницы.
[110] Теперь найдите общее количество строк в базе данных.
$totalRows = Get By applying sql query;
$pages = ceil($totalRows/$perPage);
$offset = ($pageNo - 1) * $perPage + 1
$sql = "SELECT * FROM msgtable WHERE cdate='18/07/2012' LIMIT ".$offset." ,".$perPage
GET['page'];
Теперь найдите общее количество строк в базе данных.
$totalRows = Get By applying sql query;
$pages = ceil($totalRows/$perPage);
$offset = ($pageNo - 1) * $perPage + 1
$sql = "SELECT * FROM msgtable WHERE cdate='18/07/2012' LIMIT ".$offset." ,".$perPage
Это полностью законно. Он не будет уничтожен до завершения программы.
РЕДАКТИРОВАТЬ: Да , это гарантировано:
«Все объекты, не имеющие динамического продолжительность хранения, нет потока продолжительность хранения, и не являются локальными имеют статическую продолжительность хранения. В хранение этих предметов должно длиться на время программы (3.6.2, 3.6.3). "
- Рабочий проект 2008 г., Стандарт для языка программирования C ++ , § 3.7.1 стр. 63
Как заметил Мартин, это не Полный ответ. Стандартный проект дальнейших примечаний (§ 12.2, стр. 250-1):
«Временные объекты типа класса создаются в различных контекстах: привязка rvalue к ссылке (8.5.3) [...] Даже когда создание временного объекта избегается (12.8), все семантические ограничения должны соблюдаться, как если бы временный объект был создан. [...] Временные объекты уничтожаются как последний шаг в оценке полное выражение (1.9), которое (лексически) содержит точку, где они были создан. [...] Есть два контекста в котором временные разрушаются в точка, отличная от конца полное выражение. [...] Второй контекст - это когда ссылка привязана к временному. Временное, к которому ссылка связана или временный, то есть полный объект подобъекта, на который указана ссылка привязано сохраняется на протяжении всей жизни ссылка, если не указано иное ниже. "
Я тестировал в g ++, если вам от этого станет легче.;)
Да, это допустимо и законно.
const string& SomeConstant = "This is some constant text";
// Is equivalent too:
const string& SomeConstant = std::string("This is some constant text");
Таким образом, вы создаете временный объект.
Этот временный объект привязан к константе &, и, таким образом, его время жизни продлено до срока жизни переменной, с которой он связан (т.е. дольше, чем выражение, в котором он был создан).
Это гарантируется стандартом.
Хотя это законно. Я бы не стал его использовать. Простым решением было бы преобразовать ее в const std :: string.
В этой ситуации, поскольку переменная находится в глобальной области видимости, она действительна для всей длины программы. Таким образом, его можно использовать, как только выполнение входит в main (), и к нему нельзя обращаться после завершения выполнения main ().
Хотя технически это может быть доступно до этого, ваше использование его в конструкторах / деструкторах глобальных объектов должно быть ограничено с известной проблемой порядка инициализации глобальных переменных.
Это, с другой стороны, не будет страдать от проблемы:
char const* SomeConstant = "This is some constant text";
И может использоваться в любой момент. Просто мысль.
Это может быть законно, но все же некрасиво. Оставьте ссылку!
const string SomeConstant = "This is some constant text";
Допустимо расширение временной переменной с помощью ссылки const
, это используется Александреску ScopeGaurd см. Это превосходное объяснение Херба Саттера под названием Кандидат на «Самую важную const
» .
При этом данный конкретный случай является злоупотреблением этой функцией C ++, и ссылку следует удалить, оставив простую константную строку
.
Объявление его как const (что означает, что его нельзя изменить), а затем создание ссылки, что подразумевает, что кто-то может его изменить, по крайней мере, кажется плохим тоном. К тому же, как я уверен, вы понимаете, глобальные переменные ПЛОХО и редко необходимы.
Ладно, ребята поправьте меня, если я схожу с ума, но вот мои выводы, слушая все ваши превосходные ответы:
A) это синтаксически и логически законно, & продлевает время жизни temp / anonymous за пределы уровня выражения до срока жизни ссылки. Я проверил это в VC ++ 7 с помощью:
class A {
public: A() { cout << "constructing A" << endl; }
public: ~A() { cout << "destructing A" << endl; }
};
void Foo()
{
A();
cout << "Foo" << endl;
}
void Bar()
{
const A& someA = A();
cout << "Bar" << endl;
}
int main()
{
Foo(); // outputs constructing A, destructing A, Foo
Bar(); // outputs constructing A, Bar, destructing A
return 0;
}
B) Хотя это законно, это может привести к некоторой путанице в отношении фактического срока службы, и ссылка в этих случаях не дает вам никаких преимуществ от объявления ее нереференсной, таким образом, ссылки, вероятно, следует избегать и даже может быть лишнее пространство. Поскольку в этом нет никакой пользы, это ненужное запутывание.
Спасибо за все ответы, это было очень интересное обсуждение. Итак, короче и короче: да, это синтаксически законно, нет.