rowCount () как переменная или включение ее непосредственно в операторы if, что лучше? - PullRequest
0 голосов
/ 07 сентября 2011

Я видел, как люди используют rowCount вот так ...

if ($q -> rowCount() < 1) {
   ....
}

Каким образом я использую это по большей части, мой вопрос заключается в том, что если у вас есть несколько операторов elseif, лучше ли хранить их в переменной, так как rowCount не будет вызываться более одного раза ?? Вот так ...

if (isset($_GET['action']) && $_GET['action'] === 'addhotlink') {
    $q = $dbc -> prepare("SELECT * FROM hotlinks WHERE id = ?");
    $q -> execute(array($details['id']));
    $result = $q -> rowCount();
    if ($result < 3) {
        echo '<p>Choose a name for your hotlink (max 15 characters):</p><p><form action="/success?action=hotlink" method="post"><input type="text" name="link_name" maxlength="15" /></p><input type="hidden" name="addhotlink" value="' . $_SERVER['HTTP_REFERER'] . '" /><p><input id="submit" type="submit" value="Add Hotlink" /></p></form>';
    }
    elseif ($result < 10 && $details['subscriber'] > 0) {
        echo '<p>Choose a name for your hotlink (max 15 characters):</p><p><form action="/success?action=hotlink" method="post"><input type="text" name="link_name" maxlength="15" /></p><input type="hidden" name="addhotlink" value="' . $_SERVER['HTTP_REFERER'] . '" /><p><input id="submit" type="submit" value="Add Hotlink" /></p></form>';
    }
    elseif ($result > 9 && $details['subscriber'] > 0) {
        echo '<p>You have already used your maximum number of 10 hotlinks.</p>';
    }
    else {
        echo '<p>You have already used your maximum amount of hotlinks allowed for non subscribed members.</p><p>To get more please <a href"#">subscribe</a>.</p>';
    }

Что лучше и почему ??

Ответы [ 3 ]

1 голос
/ 07 сентября 2011

Если вам просто нужно количество строк, а не реальные данные, вы должны предпочесть простой «SELECT COUNT (*)».AFAIK rowCount () в любом случае кэшируется, поэтому нет необходимости хранить его в локальной переменной.

0 голосов
/ 07 сентября 2011

Логически делать это так, как вы делаете в этом примере, должно быть быстрее, потому что $result - это просто место в памяти, которое нужно прочитать, т. Е. Очень быстро, где, как rowCount(), если функция должна обрабатываться и возвращатьсяданные.

0 голосов
/ 07 сентября 2011

Я думаю, что всегда будет быстрее хранить rowCount() в локальной переменной, поскольку у вас не будет накладных расходов на вызов функции

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...