$common_query_string = "Select a.INC_KEY,a.STATE, a.FDID, a.INC_DATE, a.INC_NO, a.EXP_NO, concat(a.NUM_MILE,' ', a.STREET_PRE,' ', a.STREETNAME,' ', a.STREETTYPE,' ',
a.STREETSUF, ' ',a.APT_NO,' ', a.CITY,' ', a.STATE_ID,' ', a.ZIP5,' ', a.ZIP4) as address, a.latitude, a.longitude,
( 3959 * acos( cos( radians($lat) ) * cos( radians( a.latitude ) )
* cos( radians( a.longitude ) - radians($lon) )
+ sin( radians($lat) ) * sin( radians( a.latitude ) ) ) ) AS distance,
a.INC_TYPE, a.FF_DEATH, a.OTH_DEATH, a.PROP_LOSS , a.CONT_LOSS,(b.CODE_DESCR) as INC_CODE_DESC, (d.CODE_DESCR) as CAUSE_CODE_DESC";
$query = sprintf("$common_query_string ,'nfirs' as SOURCE
From
(Select * From incident
Where latitude > '%s' And latitude < '%s'
And longitude > '%s' And longitude < '%s' %s)
As a , codelookup b,codelookup d
Where a.INC_TYPE = b.code_value AND b.fieldid = 'INC_TYPE'
And a.CAUSE_IGN = d.code_value AND d.fieldid = 'CAUSE_IGN'
having distance < '%s'
", mysql_real_escape_string($minLat), mysql_real_escape_string($maxLat), mysql_real_escape_string($minLon), mysql_real_escape_string($maxLon), mysql_real_escape_string($query_condition), mysql_real_escape_string($radius));
3 に答える
1
古いmysql_
メソッドを使用mysql_num_rows()
しているため、クエリを実行した後に使用できます。
$result = mysql_query($query);
$count = mysql_num_rows($result);
補足(mysql_
メソッドは非推奨になっています)代わりに推奨またはメソッド
を使用するようにコードをリファクタリングすることをお勧めします。両方で同じタイプのクエリを実行できますが、更新すると、オブジェクト指向スタイルのコード、読みやすさの向上に役立つプリペアドステートメント、およびSQLインジェクションからコードをさらに保護する機能が提供されます。mysqli_
PDO
これは同じカウント構文mysqli_num_rows()
です:
$result = mysqli_query($dbLink, $query);
$count = mysqli_num_rows($result);
UPDATE(クエリで直接カウント)クエリ
で直接行の総数を取得するには、MySQLのCOUNT()
:を使用できます。
SELECT
COUNT(*) AS `count`
FROM
(Select * From incident Where latitude > '%s' And latitude < '%s' And longitude > '%s' And longitude < '%s' %s) As a, codelookup b,codelookup d
WHERE
a.INC_TYPE = b.code_value AND b.fieldid = 'INC_TYPE' AND a.CAUSE_IGN = d.code_value AND d.fieldid = 'CAUSE_IGN'
HAVING
distance < '%s'
于 2012-11-01T05:26:10.870 に答える
1
mysql_num_rows($result);
クエリ結果によって選択された行の数を示します。
SELECT COUNT(*) FROM yourtable your join yourcondition;
LIMIT が使用されている場合に合計行を取得する...
LIMIT 句を使用したが、それを使用しない場合に得られる行数を知りたい場合は、クエリで SQL_CALC_FOUND_ROWS を使用し、その後に SELECT FOUND_ROWS(); を使用します。
SELECT SQL_CALC_FOUND_ROWS FROM yourtable your join yourcondition
LIMIT 10;
SELECT FOUND_ROWS();
于 2012-11-01T05:27:29.063 に答える
0
mysql_num_rows($result);
SELECT COUNT(*) FROM yourtable your join yourcondition;
you have to use this :
*$final_Query='select count(*)as count from ('.$query.')*
and palce this below
Where a.INC_TYPE = b.code_value AND b.fieldid = 'INC_TYPE'
And a.CAUSE_IGN = d.code_value AND d.fieldid = 'CAUSE_IGN'
having distance < '%s, mysql_real_escape_string($minLat), mysql_real_escape_string($maxLat), mysql_real_escape_string($minLon), mysql_real_escape_string($maxLon), mysql_real_escape_string($query_condition), mysql_real_escape_string($radius));
于 2012-11-01T06:08:17.313 に答える