PHP와 MySQL을 배우고 있습니다. 나는 자습서를 시도했다 :Google지도 API 매장 찾기 문제
는https://developers.google.com/maps/articles/phpsqlsearch_v3?hl=en
코드에서 쿼리가 비어 돌아 오는 것 같다. 지침에 따라 데이터베이스를 설정할 때 테이블이 있습니다. 에코 호출을 사용하여 유효한 db 연결을 얻었으며 모든 변수가 올바르게 호출되고 있음을 확인했습니다. 해당 테이블에서 (즉, 수학 또는 스프린트가 없어도) 기본 db 쿼리를 실행하면 테이블에서 반환 된 행을 얻습니다. "base2.php"파일에는 튜토리얼 (dbname, 사용자 이름 및 비밀번호)에 따라 3 개의 항목 만 포함되어 있으며 이는 정확합니다. 따라서 필요한 URL 구문을 사용하여 localhost에서 페이지를로드 할 때 :
pagename.php?lat=37&lng=-122&radius=25
xml 헤더가있는 빈 페이지 만 표시됩니다. 내가 말했던 것처럼, echo를 사용하여, 스크립트가 비어있는 것으로 반환되는 쿼리까지 도달하고 있음을 확인했습니다. 이 튜토리얼을 가지고 노는 사람이 있고 문제가 있습니까? IE11, Chrome 및 FF를 사용하여 동일한 결과를 얻습니다. 저는 WAMPserver v2.4, PHP 5.4.12, MySQL 5.6.12 및 Apache 2.4.4를 사용하고 있습니다. db의 테이블에 올바른 행과 값이 있으며 데이터가 들어 있습니다.
<?php require "base2.php";
// Get parameters from URL
$center_lat = $_GET["lat"];
$center_lng = $_GET["lng"];
$radius = $_GET["radius"];
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
// Opens a connection to a mySQL server
$connection=mysql_connect ("localhost", $username, $password);
if (!$connection) {
die("Not connected : " . mysql_error());
}
// Set the active mySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
die ("Can\'t use db : " . mysql_error());
}
// Search the rows in the stores table
$query = sprintf("SELECT Name, Address, lat, lng, (3959 * acos(cos(radians('%s')) * cos( radians(lat)) * cos(radians(lng) - radians('%s')) + sin(radians('%s')) * sin(radians(lat)))) AS distance FROM stores HAVING distance < '%s' ORDER BY distance LIMIT 0 , 10",
mysql_real_escape_string($center_lat),
mysql_real_escape_string($center_lng),
mysql_real_escape_string($center_lat),
mysql_real_escape_string($radius));
$result = mysql_query($query);
if (!$result) {
die("Invalid query: " . mysql_error());
}
header("Content-type: text/xml");
// Iterate through the rows, adding XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("Name", $row['Name']);
$newnode->setAttribute("Address", $row['Address']);
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("lng", $row['lng']);
$newnode->setAttribute("distance", $row['distance']);
}
echo $dom->saveXML();
?>
쿼리가 비어있는 경우 'HAVING' 절을 제거하려고 했습니까? 적어도 계산 한 거리가 표시됩니다. – Wrikken
안녕하세요, 응답 해 주셔서 감사합니다. HAVING 절을 제거하면 실제로 모든 결과가 반환되고 distance 특성이 포함되어 XML이 만들어집니다. 그래도이게 무슨 뜻이야? – Longman
그들은 멀리 떨어져 있다는 것을 의미하고 명백하게 생각합니다 ... 거리는 무엇이라고 말합니까? 또한 _numbers_를 의미하는 _strings_을 사용하지 마십시오. 'distance <'% s ''가 이상하게 보입니다. 아마도 distance <% d 또는 distance <% f가되어야합니다. – Wrikken