我看不出這個sql中有什麼問題。 沒有Haversine公式的最簡單的sql工作得很完美。所以我的意思是應該是關於sql或statments的東西。我看不到它。 有些想法? 謝謝,PHP PDO SQL錯誤:帶有消息'SQLSTATE [HY093]的未捕獲異常'PDOException':無效的參數編號
<?php
require_once "connectPDO.php";
// Get parameters from URL
$lat = 55; //$_GET["lat"];
$lng = 3; //$_GET["lng"];
$radius = 18; //$_GET["radius"];
// Start XML file, create parent node
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
//$query = $db->prepare("SELECT id, coursename, lat, lng FROM wp_courses");
$query = $db->prepare("SELECT coursename, lat, lng,
(3959 * acos(cos(radians(:latitude)) * cos(radians(lat))
* cos(radians(lng) - radians(:longitude)) + sin(radians(:latitude))
* sin(radians(lat)))) AS distance FROM wp_courses
HAVING distance < :radius ORDER BY distance LIMIT 0 , 20");
$query->bindParam(':latitude', $lat, PDO::PARAM_STR);
$query->bindParam(':longitude', $lng, PDO::PARAM_STR);
$query->bindParam(':radius', $radius, PDO::PARAM_STR);
$query->execute();
header("Content-type: text/xml");
foreach ($query->fetchAll(PDO::FETCH_ASSOC) as $row) {
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("name", $row['coursename']);
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("lng", $row['lng']);
$newnode->setAttribute("distance", $row['distance']);
}
echo $dom->saveXML();
?>
不知道,但我不'噸認爲你可以即使值相同或啓用仿真,您需要唯一綁定的回收參數:'$ db-> setAttribute(PDO :: ATTR_EMULATE_PREPARES,true)' – Mihai
正如@mihai所說,您不能重用參數。錯誤信息非常簡單,真的。 – junkfoodjunkie