Некоторое время назад я шутил с SQLite, пытаясь перенести некоторые из моих сайтов, чтобы использовать его вместо MySQL. Я повесил трубку на отсутствие функции для подсчета результатов, например, PHP mysql_num_rows()
. После небольшого поиска я обнаружил this mail list, в котором говорится (как я понимаю), что SQLite не обладает такой функциональностью, потому что он неэффективен. В нем говорится, что это плохая форма для написания кода, который должен знать, сколько строк возвращается.Является ли mysql_num_rows эффективной и/или стандартной практикой?
Обычно я использую mysql_num_rows
, чтобы проверить результаты пустых возвратов. Например:
$query = "SELECT * FROM table WHERE thing = 'whatever'";
$results = mysql_query($query);
if (mysql_num_rows($results)) {
while ($row = mysql_fetch_array($results)) {
echo "<p>$row[whatever]</p>";
}
} else {
echo "<p>No results found</p>";
}
на яростное отвращение к концепции mysql_num_rows()
в SQLite сообщества заставляет меня задаться вопросом, если это то, что очень эффективно для регулярного MySQL в PHP.
Есть ли лучший, более приемлемый способ проверки размера набора результатов MySQL в PHP, кроме mysql_num_rows()
?
EDIT: Я не просто использую mysql_num_rows
, чтобы получить счет. Я бы использовал запрос COUNT
. Я использую его, чтобы проверить, есть ли какие-либо результаты перед выводом всего. Это полезно для чего-то вроде отображения результатов поиска - не всегда гарантируется, что будут результаты. В мире SQLite я должен отправить один запрос COUNT
, проверить, есть ли что-то, а затем отправить запрос SELECT
, чтобы получить все.
Отлично - я не знал о ложном возвращении из mysql_query. – Andrew
Да. Вот почему работает while ($ row = ...). –