sql count () пример для PHP руководства - PullRequest
0 голосов
/ 03 марта 2020

Я работаю над функцией нумерации страниц с PHP pdo. Поэтому, если вы хотите посчитать количество строк в операторе select, вам нужно использовать метод query () и использовать функцию SQL count ()

https://www.php.net/manual/en/pdostatement.rowcount.php

Это все имеет смысл, но что если мне нужно посчитать количество строк в операторе select, где я использую prepare () и связанные параметры? например, если я беру конфиденциальные данные пользователя для вставки в оператор выбора?

1 Ответ

3 голосов
/ 03 марта 2020

Эта страница руководства почти завершена руби sh. Это сбивает с толку две абсолютно разные задачи, которые никогда нельзя было бы поменять местами.

Следовательно, запрос SQL count () просто не имеет отношения к PDO :: rowCount () для запросов на выборку и никогда не должен использоваться для этой цели.

Вместо этого лишнего и бесполезного запроса вы должны использовать сам результат :

  • На случай, если вы выбрав только одну строку, затем извлеките эту строку и используйте извлеченный массив везде, где предполагалось использовать количество строк:

    $stmt = $pdo->prepare("SELECT * FROM users WHERE id=?");
    $stmt->execute([$id]); 
    $user = $stmt->fetch();
    if ($user) {
        ...
    }
    
  • , если вы выбираете несколько строк - извлекайте их как ну и используйте извлеченные данные:

    $stmt = $pdo->prepare("SELECT * FROM users LIMIT :limit, :offset");
    $stmt->execute(['limit' => $limit, 'offset' => $offset]); 
    $data = $stmt->fetchAll();
    if ($data) {
        ...
    }
    

Я не могу представить себе случай, когда вам нужно будет получить фактическое количество возвращаемых строк, но в таком случае просто используйте PHP Счет ():

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