0
私は経験豊富なレール開発者ですが、PHPと生のSQLではかなり錆びています。私はthis tutorialとthis tutorialを使って店舗検索アプリケーションを構築しようとしています。私はGoogle Maps Store Finderのクエリが正しく返されない
$user_lat = $_GET["lat"];
$user_lng = $_GET["lng"];
$radius = $_GET["radius"];
$query = "SELECT 'Address','LocName','Latitude','Longitude', (3959 * acos(cos(radians($user_lat)) * cos(radians(Latitude)) * cos(radians(Longitude) - radians($user_lng)) + sin(radians($user_lat)) * sin(radians(Latitude)))) AS distance FROM Locations ORDER BY distance";
(私自身のデータベースの列名を持つ)
これは私が私のクエリのために使用していたコードであるを満たしていると私は、これで結果を返すのです(単なるテストなど):
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
$num=mysql_numrows($result);
mysql_close();
?>
<table border="0" cellspacing="2" cellpadding="2">
<tr>
<th><font face="Arial, Helvetica, sans-serif">Name</font></th>
<th><font face="Arial, Helvetica, sans-serif">Distance</font></th>
<th><font face="Arial, Helvetica, sans-serif">Address</font></th>
</tr>
<?php
while ($row = mysql_fetch_assoc($result)) {
$f1=mysql_result($result,$i,"LocName");
$f2=mysql_result($result,$i,"distance");
$f3=mysql_result($result,$i,"Address");
?>
<tr>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2 ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
</tr>
<?php
$i++;
}
?>
私が行く得たとき、私は以下の結果を得ていますが:findstore.php LAT = 33.98 & LNG = -118.42
Name Distance Address
LocName 0.65415504532801 Address
LocName 0.65415504532801 Address
LocName 0.666819627384179 Address
LocName 0.923277344110443 Address
LocName 2.32751232712236 Address
LocName 2.33924574433009 Address
?
など
明らかに、距離は正しく計算されていますが、それぞれの住所と地名がわかりません。
私は間違っていますか?
ありがとうございます!
完全に働いたこと素晴らしいです!何故ですか? – goddamnyouryan
カラム名を一重引用符で囲むと、入力するリテラル文字列が選択されます。 'SELECT 'Address' ...'は 'Address'を返します。この場合、バッククォートは必要ありません。何もせずに列名を照会するだけで( 'SELECT Address ...')、それもうまくいきます。バックティックは単なる良い習慣です。 –