MySQL Select Count и rowCount - PullRequest
       24

MySQL Select Count и rowCount

0 голосов
/ 29 мая 2018

Я хочу проверить, сколько B> 0 в моей таблице.Моя таблица выглядит так:

+---A---+---B---+
|   x   |   0   | 
|   x   |   0   |
|  ...  |  ...  |        
-----------------

Столбец B важен.Если нет строки> 0, то я не запустил бы другой код и мог бы просто повторить текст.Если есть одна строка с B> 0, мне нужно это знать.

Я попробовал это до сих пор, что дает мне результат, показанный на картинке.И я проверил таблицу, это правильно.

"SELECT COUNT(*) FROM table
                WHERE B>0";

enter image description here

Я попытался проверить 0 с кодом ниже, но я даю 1 в результате,Вероятно, потому что он считает строку выше на картинке.

$statement_count = $pdo->prepare($check);
$statement_count->execute(); 
$count = $statement_count->rowCount();
echo $count;

Итак, что я могу сделать вместо этого?

Ответы [ 3 ]

0 голосов
/ 29 мая 2018

Если вы сделаете:

$check = "SELECT B FROM table WHERE B>0"
$statement_count = $pdo->prepare($check);
$statement_count->execute(); 
$count = $statement_count->rowCount();
echo $count;

Это будет отображать количество строк, соответствующих вашим критериям.если вы примените rowCount к запросу, который выполняет SELECT COUNT, он по определению вернет 1, поскольку запрос всегда будет возвращать одну строку

Другой вариант - запустить запрос подсчета, который у вас есть

$check = "SELECT COUNT(*) FROM table WHERE B>0";
$statement_count = $pdo->prepare($check);
$statement_count->execute(); 
$count = $statement_count->fetchColumn();
echo $count;
0 голосов
/ 29 мая 2018

Ваш запрос всегда возвращает ровно 1 строку.Вам нужно прочитать значение в этой строке.Чтобы прочитать только один столбец из одной строки, вы можете использовать PDOStatement::fetchColumn:

$count = $statement_count->fetchColumn();
0 голосов
/ 29 мая 2018

Вам не нужно получать количество строк, вам нужно получить результат запроса и проанализировать его, а затем прочитать значение для «count (*)»

...