继续收到错误警告:PDOStatement :: execute()最多需要1个参数,在config.php第15行中给出2

时间:2013-07-22 03:49:24

标签: jquery sql database geolocation

这是我的地理位置页面的索引页

<!DOCTYPE html>
<html>
<head>
<script src="js/jquery.js"></script>
</head>

<body>
<script>
setInterval ( "onPositionUpdate()", 10000 );

var currPosition;
navigator.geolocation.getCurrentPosition(function(position) {
    updatePosition(position);
    setInterval(function(){
        var lat = currPosition.coords.latitude;
        var lng = currPosition.coords.longitude;
        $.ajax({
            type: "POST", 
            url:  "myURL/location.php", 
            data: 'x='+lat+'&y='+lng, 
            cache: false
        });
    }, 2000);
}, errorCallback); 

var watchID = navigator.geolocation.watchPosition(function(position) {
    updatePosition(position);
});

function updatePosition( position ){
    currPosition = position;
}

function errorCallback(error) {
    var msg = "Can't get your location. Error = ";
    if (error.code == 1)
        msg += "PERMISSION_DENIED";
    else if (error.code == 2)
        msg += "POSITION_UNAVAILABLE";
    else if (error.code == 3)
        msg += "TIMEOUT";
    msg += ", msg = "+error.message;

    alert(msg);
}
</script>
</body>
</html>

这是我的location.php页面

<?php
  include ('config.php');

  // database connection
  $conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

  // new data

  $x = @$_POST['x'];
  $y = @$_POST['y'];

  // query
  $sql = "update locations set x=?, y=? where username = asd";
  $q = $conn->prepare($sql);
  $q->execute(array($x),($y));

?>

这是我的config.php页面

<?php
$dbtype     = "";
$dbhost     = "localhost";
$dbname     = "test";
$dbuser     = "root";
$dbpass     = "";

?>

问题是当我在我的xampp上测试我的地理位置时 我一直收到错误警告:PDOStatement :: execute()最多需要1个参数,2在第15行的C:\ xampp \ htdocs \ project_track \ myURL \ location.php中给出

我正在尝试创建一个跟踪我的位置的应用程序并将其上传到我的数据库我已经在这个项目工作了一段时间希望我在正确的轨道上我想知道我该怎么做才能纠正这个问题可以一些请帮助...我应该如何设置我的数据库为此我希望我的应用程序记录用户名和lat和长并保存到我的数据库并检索它所以我可以使用它谷歌地图请帮助我此...

我的Sql是否错误

1 个答案:

答案 0 :(得分:3)

您的执行行应为:

$q->execute(array($x, $y));

不是吗? Input参数应该是数组的形式,但是你提供了2个参数,一个是数组,另一个是变量。

此外,SQL不正确。它应该是:

update locations set x=?, y=? where username = 'asd'

参考:http://php.net/manual/en/pdostatement.execute.php