このエラーに対処する多くの質問があることは知っていますが、私が考えた問題を修正するために彼らが求めたことを実行しました。以下は私が行ったことですが、まだエラーが発生しています。このスクリプトの目的は、特定の半径内のすべての郵便番号を表示することです。
$zip = 94550; // "find nearby this zip code"
$radius = 15; // "search radius (miles)"
$maxresults = 10; // maximum number of results you'd like
$sql = "SELECT * FROM
(SELECT o.zipcode, o.city, o.state,
(3956 * (2 * ASIN(SQRT(
POWER(SIN(((z.latitude-o.latitude)*0.017453293)/2),2) +
COS(z.latitude*0.017453293) *
COS(o.latitude*0.017453293) *
POWER(SIN(((z.longitude-o.longitude)*0.017453293)/2),2)
)))) AS distance
FROM zipcoords z,
zipcoords o,
zipcoords a
WHERE z.zipcode = ".$zip." AND z.zipcode = a.zipcode AND
(3956 * (2 * ASIN(SQRT(
POWER(SIN(((z.latitude-o.latitude)*0.017453293)/2),2) +
COS(z.latitude*0.017453293) *
COS(o.latitude*0.017453293) *
POWER(SIN(((z.longitude-o.longitude)*0.017453293)/2),2)
)))) <= ".$radius."
ORDER BY distance)
ORDER BY distance ASC LIMIT 0,".$maxresults;
$result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());
while ($ziprow = mysql_fetch_array($result)) {
$zipcode = $ziprow['zipcode'];
echo "$zipcode<br>";
}
データベース内のすべての列は varchar です。zipcode がプライマリであり、INT にしますが、zipcode の先頭に 0 を含めることはできません。だから私はそれをvarcharに変更し、それを許可しました。助けてくれてありがとう!