使用Ajax和PHP将数据发送到MySQL

时间:2012-02-12 19:05:16

标签: php mysql ajax geolocation

我想通过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());
}
?> 

2 个答案:

答案 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连接。