mysql_num_rows всегда возвращает 1 - PullRequest
2 голосов
/ 22 сентября 2010

Результат всегда равен 1:

$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$vote_total = mysql_num_rows($res);

Я запустил запрос $ sql в phpMyAdmin, и он возвращает 3, поэтому запрос не является проблемой.$ voice_total инициализируется глобально в 0, так что 1 приходит откуда-то.Какую другую информацию мне нужно предоставить, чтобы облегчить мне задачу?

Спасибо, Райан

Ответы [ 4 ]

10 голосов
/ 22 сентября 2010

mysql_num_rows возвращает количество выбранных строк, а не полей определенной строки. Используйте mysql_fetch_row, чтобы выбрать строку, выбранную в вашем запросе:

$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$row = mysql_fetch_row($res);
$vote_total = $row[0];

Вы также можете использовать mysql_result для извлечения строки и получения определенного поля:

$vote_total = mysql_result($res, 0, 0);

Извлекает первую строку (на основе нуля) и возвращает первое поле (на основе нуля).

2 голосов
/ 22 сентября 2010

Этот запрос возвращает только одну строку.Вам нужно получить значение из запроса:

$row = mysql_fetch_array($res);
$vote_total = $row[0];
2 голосов
/ 22 сентября 2010

Всегда будет только один ряд.И в этом ряду будет количество голосов.

$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$vote_array = mysql_fetch_array($res);
$vote_total = $vote_array[0];

Если вы хотите подсчитать количество голосов с помощью mysql_num_rows, вам нужно выбрать ВСЕ строки.

1 голос
/ 22 сентября 2010

Сложность в том, что даже если SQL-запрос содержит инструкцию COUNT (), он все равно является результатом запроса, как и любой другой. MySQL вернет строку, связывающую один столбец с количеством строк, которые были бы возвращены, если бы вы выполнили запрос reglar. mysql_num_rows (), с другой стороны, просто считает количество строк в результате запроса, который был фактически выполнен. В этом случае это всегда одна строка.

То, что вы хотите:

$sql = 'SELECT COUNT(Vote) FROM ' . $table;
$res = mysql_query($sql, $conn);
$data = mysql_fetch_row($res);
$vote_total = $data[0];
...