Если я должен знать общее количество строк в таблице базы данных, я делаю что-то вроде этого:
$query = "SELECT * FROM tablename WHERE link='1';";
$result = mysql_query($query);
$count = mysql_num_rows($result);
Обновленный: Я сделал ошибку, выше мой фактический путь. Я приношу извинения всем
Таким образом, Вы видите, что общее количество данных восстанавливается, сканируя через всю базу данных.
Существует ли лучший путь?
$query = "SELECT COUNT(*) FROM tablename WHERE link = '1'";
$result = mysql_query($query);
$count = mysql_result($result, 0);
Это означает, что вы не переносите все свои данные между базой данных и PHP, что, очевидно, является огромной тратой времени и ресурсов.
Как бы то ни было, ваш код на самом деле не будет подсчитывать количество строк - он даст вам вдвое больше столбцов, поскольку вы подсчитываете количество элементов в массиве, представляющем одну строку (и mysql_fetch_array дает вам две записи в массиве для каждого столбца - одну числовую и одну для имени столбца)
Вы можете просто ввести:
SELECT count(*) FROM tablename;
по вашему запросу. Результатом будет единственный столбец, содержащий количество строк.
Если мне нужно узнать общее количество строк в таблице базы данных
Возможно, я чего-то не понимаю, но если вы хотите получить общее количество строк в таблице, вам не нужно условие WHERE. Просто сделайте следующее:
SELECT COUNT(*) FROM tablename
С условием WHERE вы будете подсчитывать только количество строк, удовлетворяющих этому условию.
Если вы собираетесь использовать следующий оператор SQL:
SELECT COUNT(*) FROM tablename WHERE link='1';
Убедитесь, что у вас есть индекс в столбце « ссылка »
используйте код ниже
$qry=SHOW TABLES FROM 'database_name';
$res=mysql_query($qry);
$output=array();
$i=0;
while($row=mysql_fetch_array($res,MYSQL_NUM)){
++$i;
$sql=SELECT COUNT(*) FROM $row[0];
$output[$i]=mysql_query($sql);
}
$totalRows=array_sum($ouptput);
echo $totalRows;
http://php.net/manual/en/function.mysql-num-rows.php Вам нужно вот это, я думаю.