1回の呼び出しで複数のmysql値を取得する方法を理解したいと思います。現状では、現在のクエリが機能しています。
SELECT COUNT(*) AS cnt,
(3595 *
acos(
cos(radians({$lat1}))
* cos(radians(lattitude))
* cos(radians(longitude) - radians({$lon1}))
+ sin(radians({$lat1}))
* sin(radians(lattitude))
)
) AS distance
FROM members WHERE person = 'single'
HAVING distance < 50
);
これは後で私のPHPによって次のように呼び出されます:
$single = $row['cnt'];
echo json_encode( array(
'single' => $single
) );
私の仮定のテーブルがある人で構成されsingle
、married
とdivorced
。この例では、である人に対してのみクエリを実行しましたsingle
。同じmySQlクエリを使用して、これらすべてのグループに対して同じリクエストを実行するようにクエリを変更する方法を知りたいです。特にjson encode
機能を使用します。
私が見た1つの例はSELECT
、の複数のインスタンスと組み合わされた複数の個別のステートメントに依存しています$row['cnt']
。
私のバージョンは、@ scaisEdgeのものと非常によく似ています。そこよりも多くのカテゴリがない場合、実際にsingle
、married
そしてdivorced
、WHERE
句は必要ありません。
$conn = new mysqli( $host, $user, $pass, $db );
$result = $conn->query( "
SELECT
COUNT(*) AS cnt,
(3595 *
acos(
cos(radians({$lat1}))
* cos(radians(lattitude))
* cos(radians(longitude) - radians({$lon1}))
+ sin(radians({$lat1}))
* sin(radians(lattitude))
)
) AS distance,
person -- <-- this gives you the category in the result
FROM
members
WHERE
person in ('single', 'divorced', 'married')
GROUP BY
person
HAVING
distance < 50
" );
$rows = $result->fetch_all( MYSQLI_ASSOC );
echo json_encode( $rows );
mysqli_result :: fetch_allは、必要なものを取得するのに役立ちます。http://php.net/manual/en/mysqli-result.fetch-all.php ;)
更新:
JSで行うことは、次のようなものです。
data.forEach( function( item )
{
switch ( item.person )
{
case 'single':
$( "#count_single" ).html( item.cnt )
break
case 'married':
$( "#count_married" ).html( item.cnt )
break
case 'divorced':
$( "#count_divorced" ).html( item.cnt )
break
}
} )
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加