我想通过Ajax调用和PHP脚本将地理数据(纬度和经度)发送到mySQL数据库。 Ajax和PHP脚本对我来说都没问题,但没有任何内容可以访问数据库。我尝试了不同的语法和选项(比如PDO with array)来管理MySQL,但仍然没有...你知道出了什么问题吗?
非常感谢你的帮助, FLO。
我的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());
}
?>
答案 0 :(得分:1)
我愿意:
$query="insert into location (lat,long) values('".$_POST['latitude']."','".$_POST['longitude']."');";
mysql_query($query,$connection);
你好像忘记了mysql_query()的连接,我不确定使用:latitude等。
答案 1 :(得分:1)
对于您的第一个代码块,请尝试以下mysql查询:
"INSERT INTO location (lat,lng) VALUES ('" . $latitude . "', '" . $longitude . "')"
此外,在插入数据库之前清理数据非常重要 - 这种代码会让您对SQL注入开放。
您应该在变量周围使用函数mysql_real_escape_string。将post变量分配给$ longitude和$ latitude时,或者在查询本身中,可以将其放入。
调用函数时,您需要有一个mysql连接。