【发布时间】:2012-03-04 08:04:21
【问题描述】:
我想通过 Ajax 调用和 PHP 脚本将地理数据(纬度和经度)发送到 mySQL 数据库。 Ajax 和 PHP 脚本对我来说看起来都不错,但没有任何东西进入数据库。我尝试了不同的语法和选项(例如带有数组的 PDO)来管理 MySQL,但仍然没有...您知道出了什么问题吗?
非常感谢您的帮助, 弗洛。
我的 Html 页面的 Jquery 代码很简单:
function getCoordPosition(){
if(navigator.geolocation){
navigator.geolocation.getCurrentPosition(function(position){
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
$.ajaxSetup({
url: "insert-in-bdd.php",
type: "POST",
});
$.ajax({
data: 'latitude='+latitude+'&longitude='+longitude,
success: function (msg) {
alert (msg);},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert('Error submitting request.');
}
});
});
}
}
我尝试的第一个 PHP 脚本 (insert-in-bdd.php) 是:
<?php
header('Content-type: text/html; charset=ISO-8859-1');
try
{
if(isset($_POST['latitude']) && isset($_POST['longitude'])){
$latitude = ($_POST['latitude']);
$longitude = ($_POST['longitude']);
$db = mysql_connect(localhost, root, "");
$select = mysql_select_db(madb, $db);
mysql_query('INSERT INTO location (lat,lng)
VALUES (:longitude, :longitude)');
}}
catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
?>
我尝试的第二个 PHP 脚本(使用 PDO 和数组),同名:insert-in-bdd.php 是:
<?php
header('Content-type: text/html; charset=ISO-8859-1');
try
{
if(isset($_POST['latitude']) && isset($_POST['longitude'])){
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=madb', 'root', '');
$req = $bdd->prepare('INSERT INTO location(lat, lng) VALUES(:lat, :lng)');
//$req = $bdd->prepare('UPDATE location SET lat = :lat');
$req->execute(array(
'lat' => $_POST['latitude'],
'lng' => $_POST['longitude']
));
}}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
?>
【问题讨论】:
-
基本调试:您在 PHP 中的
var_dump($_POST)中看到了什么? -
mysql_query()不接受:latitude等输入参数。 -
呃,为什么是标题?第一个代码也不起作用,第二个看起来还可以
-
另外,在 PDO 中,输入参数键必须与 SQL 中声明的键匹配。如果我记得,这意味着他们需要
:lat中的:,:lng而不是execute()调用中的lat, lng。 -
@Michael 我相信两种方式都可以接受; PDO 手册页中有一条评论证实了这一点,IIRC
标签: php mysql ajax geolocation